A simple implement of consistent hashing.
Project description
Introduction
Consistent hashing is a special kind of hashing such that when a hash table is resized and consistent hashing is used, only few keys need to be remapped. In contrast, in most traditional hash tables, a change in the number of array slots causes nearly all keys to be remapped.
ConsistentHashing is a very simple implement of concistent hashing.
Usage examples
>>> from consistenthashing import consistenthashing
>>> inst = consistenthashing(nodes=["122.225.109.103","221.236.5.135","58.58.179.52","61.174.51.204","222.186.31.234","182.74.141.242","179.107.90.135"], slotSize=10000, virtualNode=2)
>>> inst.getAllNodes()
['122.225.109.103', '221.236.5.135', '58.58.179.52', '61.174.51.204', '222.186.31.234', '182.74.141.242', '179.107.90.135']
>>> inst.addNode('1.1.1.1')
True
>>> inst.getNode('1')
'61.174.51.204'
>>> inst.getNode('a')
'122.225.109.103'
>>> inst.getNode('hello')
'61.174.51.204'
>>> inst.getNode('consistenthashing')
'1.1.1.1'
>>> inst.getVirtualNodeNumber()
2
>>> inst.getVirtualNodes('221.236.5.135')
['221.236.5.135_virtual1', '221.236.5.135_virtual2']
>>> inst.removeNode('122.225.109.103')
True
>>> inst.addNode('pypi.python.org')
True
>>> inst.getAllNodes()
['221.236.5.135', '58.58.179.52', '61.174.51.204', '222.186.31.234', '182.74.141.242', '179.107.90.135', '1.1.1.1', 'pypi.python.org']
Referencek
Consistent hashing http://en.wikipedia.org/wiki/Consistent_hashing
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file ConsistentHashing-0.2.2.tar.gz.
File metadata
- Download URL: ConsistentHashing-0.2.2.tar.gz
- Upload date:
- Size: 2.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1635c0878a58b246679c9b3c4d128461feac09363ed94b5dbdd5ad307a5922ef
|
|
| MD5 |
a2198bfe2ed8eb1df1013d908fd87bc5
|
|
| BLAKE2b-256 |
712edbbfdc36787a661ade91787d336d600d774cabe8fc70774784a90e303985
|