Skip to content

jacky-xbb/consistent-hash

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

consistent-hash

Implements consistent hashing that can be used when the number of server nodes can increase or decrease.The algorithm that is used for consistent hashing is the same as libketama.

Install:

python setup.py install

Usage:

It's so easy to use^_^

from consistent_hash import ConsistentHash

# You can construct consistent hash with the below three ways
con_hash = ConsistentHash({'192.168.0.101:11212':1, '192.168.0.102:11212':2, '192.168.0.103:11212':1})
# Or
con_hash = ConsistentHash(['192.168.0.101:11212', '192.168.0.102:11212', '192.168.0.103:11212'])
# Or
con_hash = ConsistentHash('192.168.0.101:11212')

# Add servers to hash ring
con_hash.add_nodes({'192.168.0.104:11212':1})
# Get a server via the key of object
server = con_hash.get_node('my_key')
# Delete the server from hash ring, you don't need to indicate weights
con_hash.del_nodes(['192.168.0.102:11212', '192.168.0.104:11212'])

Unit test:

  • Firstly, install nose which extends unittest to make testing easier.

      pip install nose
    
  • Then, run tests.

      # Option -s any stdout output will be printed immediately
      # and -v be more verbose
      nosetests -s -v
    

More information about nose.

About

Consistent hashing algorithm with python

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages