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 - being unable to remove nodes.
Hash is NOT thread-safe.
func (*Hash) Get ¶
Get returns the existing object for the key, or nil if there is no object in the hash.
func (*Hash) Random ¶
func (h *Hash) Random() interface{}
Random returns a random object, or nil if there is no object in the hash.
Click to show internal directories.
Click to hide internal directories.