网站首页PHP学习

一致性hash算法在内存数据库中的应用

发布时间:2015-12-23编辑:admin阅读(545)

      由于redis是单点,然则项目中不可避免的会应用多台Redis缓存服务器,那末怎样把缓存的Key平均的映射到多台Redis服务器上,且跟着缓存服务器的增长或削减时做到最小化的削减缓存Key的命中率呢?如许就必要咱们自己完成散布式。

          Memcached对人人应当不生疏,经由过程把Key映射到Memcached Server上,完成疾速读取。咱们能够静态对其节点增长,并未影响以前曾经映射到内存的Key与memcached Server之间的干系,这便是由于应用了一致性哈希。由于Memcached的哈希战略是在其客户端完成的,是以分歧的客户端完成也有区别,以Spymemcache、Xmemcache为例,都是应用了KETAMA作为其完成。

    一致性hash算法:
          由于hash算法成果一样平常为unsigned int型,是以对付hash函数的成果应当平均散布在[0,2^32-1]区间,假如咱们把一个圆环用2^32 个点来停止平均切割,起首依照hash(key)函数算出服务器(节点)的哈希值, 并将其散布到0~2^32的圆环上。
          用异样的hash(key)函数求出必要存储数据的键的哈希值,并映射到圆环上。而后从数据映射到的地位开端顺时针查找,将数据保留到找到的第一个服务器(节点)上。key1、key2、key3和server1、server2经由过程hash都能在这个圆环上找到自己的地位,而且经由过程顺时针的方法来将key定位到server。按上图来讲,key1和key2存储到server1,而key3存储到server2。假如新增一台server,hash后在key1和key2之间,则只会影响key1(key1将会存储在新增的server上),别的稳定。


    收录情况:百度已收录,点击查看详情
    本文地址:http://luvial.cn/content/10061.html
    转载请保留原文地址!

    如果您觉得本文对您有帮助,且您有经济能力,欢迎捐助本站
标签: hash算法
上一篇:Cookie禁用了,Session还能用吗?
下一篇:陪伴我作为程序员的9句至理名言