redis分片时的Hash一致性算法

 

产生背景:Redis分片是如何存储数据

问题:使用redis的分片操作后,数据会落入不同的redis节点中.那么数据存储的规则是什么?

解决方案:redis内存采用hash一致性算法

 

1.算法介绍

 

redis分片时的Hash一致性算法

主要解决:数据存储一致性问题.

 

2.数据挂载的方式

redis分片时的Hash一致性算法

 

三、Hash一致性算法的特性

均衡性

说明:经过hash值运算结果,尽可能的让数据均匀的分配到节点中,保证数据的均衡性.

如果redis节点有n个,每个节点中的数据最好保持1/n的数据

redis分片时的Hash一致性算法

 

单调性

说明:由于节点的新增.这时的数据应该动态的迁移.这种特性叫做单调性.

规则:已经挂载好的数据,原有节点尽可能保持不变.

redis分片时的Hash一致性算法

 

分散性

原则:一个key经过hash计算后的位置一定是唯一的!!!!

说明:由于分布式的操作,一个key可能落入多个位置(多个值)这种特性叫做分散性

redis分片时的Hash一致性算法

 

说明:从任意的角度而言,都满足哈希一致性算法的要求.但是从宏观角度而言可能会出现同一个key值所对应的位置是不用的.

负载

说明:负载是从另一个角度研究分散性.

概念说明:由于分布式的操作,同一个位置可能会有多个数据.哈希一致性算法要求应该尽可能的降低负载.

redis分片时的Hash一致性算法

 

说明:根据哈希一致性算法的要求.当key值已经进行了数据的分配.这时key2也需要进行赋值操作.那么key2就会把key进行覆盖.那么这时的数据是有问题的.所有尽可能的降低负载.

关于分散性和负载的说明:

在分布式操作过程中,尽可能的使用全部的redis内存,否则会出现分散性和负载这样的问题.