libketama-style consistent hashing in Go
Latest commit bea055a Aug 5, 2013 @mncaudill Create LICENSE
Failed to load latest commit information.
.gitignore initial commit Jun 6, 2011
LICENSE Create LICENSE Aug 5, 2013
README Me talk pretty someday. Jun 6, 2011
ketama.go Trying out the unadorned return thingamajig Jul 13, 2012
ketama_test.go Placeholder not necessary Jul 13, 2012


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.