在Python中实现一致性哈希(使用md5作为哈希函数)。
项目描述
关于hash_ring
实现一致性哈希,可用于服务器节点数量可增加或减少的情况(如memcached)。哈希环使用与libketama相同的算法构建。
一致性哈希是一种方案,它以提供哈希表功能的方式,在添加或删除一个槽位时,不会显著改变键到槽位的映射。
更多关于hash_ring的信息可以阅读一篇博客文章(详细解释了这个想法)
在python中简单实现一致性哈希 <http://amix.dk/blog/viewEntry/19367>
更多关于一致性哈希的信息可以阅读这些文章
使用一致性哈希进行Web缓存 <http://www8.org/w8-papers/2a-webserver/caching/paper2.html>
一致性哈希和随机树 <http://citeseerx.ist.psu.edu/legacymapper?did=38148>
还有一个扩展python-memcache以使用一致性哈希进行键分布的包装器MemcacheRing。
示例
使用示例(用于管理memcached实例)
memcache_servers = ['192.168.0.246:11212', '192.168.0.247:11212', '192.168.0.249:11212'] ring = HashRing(memcache_servers) server = ring.get_node('my_key')
使用权重的示例
memcache_servers = ['192.168.0.246:11212', '192.168.0.247:11212', '192.168.0.249:11212'] weights = { '192.168.0.246:11212': 1, '192.168.0.247:11212': 2, '192.168.0.249:11212': 1 } ring = HashRing(memcache_servers, weights) server = ring.get_node('my_key')
如何使用MemcacheRing
from hash_ring import MemcacheRing mc = MemcacheRing(['127.0.0.1:11212']) mc.set('hello', 'world') print mc.get('hello')
代码应该是整洁和简单的。如果在检测到错误时,请随时联系作者。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
hash_ring-1.3.1.tar.gz (4.0 kB 查看哈希值)
构建分布
hash_ring-1.3.1-py2.7.egg (8.4 kB 查看哈希值)
关闭
hash_ring-1.3.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f86b96517bc5cb7dbf34bbbc51cdd5968170877b43bc1ab7c9eb39345cff4dd7 |
|
MD5 | 16905a5bc16927a03a1ec29f7f762649 |
|
BLAKE2b-256 | 32f1798501920f7043d93707ccd902e7d9a0cfb68efc8d8051c16a3f8ee6c64f |
关闭
hash_ring-1.3.1-py2.7.egg的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 67b05e6c753a982cda85e4b1c010493b159e53ab112c3ac3b1c8fb6734f050d7 |
|
MD5 | 7c8d1592d0c31d8164d08a529877ae00 |
|
BLAKE2b-256 | 480d070787770ee36992a37caaeb32135aec27756f8e15f1cef7a316d0af9bec |