普通Hash算法:
以机器数量为基数,对缓存key值进行hash取模,如果某台机器挂了,挂掉的机器上的缓存需要全部重建,并且因为机器基数变了,Key值的hash取模结果也会变,会命中与之前不同的机器,导致大量的缓存重建;
一致性Hash:
- 一个标准的2^32-1的环;
- 所有的物理机器全都映射成150个虚拟机器,均匀的映射到hash环上;(是为了在机器较少的情况下,数据也能均匀分布)
- 所有的数据也都hash映射到环上,顺时针找到第一个机器来存储;
- 增加和删除节点,影响范围较小,且均匀;
Redis的Hash Slot算法:
Hash Slot是redis cluster使用的缓存分布式算法,共有16384个槽,均匀的分布在3个以上的redis集群上,增加和删除节点时,会自动迁移槽到其他节点上;