Skip to content

mncaudill/ketama

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

=====================================
ketama.go
libketama-style consistent hashing in Go

Author: Nolan Caudill (nolan@nolancaudill.com)
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.

===========
USAGE
===========

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

About

libketama-style consistent hashing in Go

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages