package module
v0.0.0-...-bea055a Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Aug 5, 2013 License: MIT Imports: 3 Imported by: 0


libketama-style consistent hashing in Go

Author: Nolan Caudill (
Date: 2011-06-04

This is a small library to do libketama-style consistent hashing. 

A common pattern in a caching cluster (eg, memcache) is to take the hash of the key modded by
the number of cache servers to determine which node to cache to. This provides a distribution as 
even as your hashing algorithm but whenever a server is added or removed, all your keys have to rehash.

With consistent hashing, in the event of the removal of a cache node, all keys that were hashing to one 
node to (in theory) evenly distribute to the other cache nodes. The addition of a cache node works in a 
similar manner in that all nodes will evenly give up a portion of their cache keys to the new node.

This is a first pass at this and things seems to work at first glance but consider this alpha.


ketama_test.go provides a working example of how to use this library.




This section is empty.


This section is empty.


func NewRing

func NewRing(n int) (h *hashRing)


This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL