Documentation
¶
Overview ¶
Package doublejump provides a revamped Google's jump consistent hash.
Example ¶
h := NewHash()
for i := 0; i < 10; i++ {
h.Add(fmt.Sprintf("node%d", i))
}
fmt.Println(h.Len())
fmt.Println(h.LooseLen())
fmt.Println(h.Get(1000))
fmt.Println(h.Get(2000))
fmt.Println(h.Get(3000))
h.Remove("node3")
fmt.Println(h.Len())
fmt.Println(h.LooseLen())
fmt.Println(h.Get(1000))
fmt.Println(h.Get(2000))
fmt.Println(h.Get(3000))
Output: 10 10 node9 node2 node3 9 10 node9 node2 node0
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Hash ¶
type Hash struct {
// contains filtered or unexported fields
}
Hash is a revamped Google's jump consistent hash. It overcomes the shortcoming of the original implementation - not being able to remove nodes.
func NewHash ¶
func NewHash() *Hash
NewHash creates a new doublejump hash instance, which is threadsafe.
func NewHashWithoutLock ¶
func NewHashWithoutLock() *Hash
NewHashWithoutLock creates a new doublejump hash instance, which does NOT threadsafe.
Click to show internal directories.
Click to hide internal directories.