一致性hash算法是在redis 分片中使用,hash槽在redis cluster(集群)中使用
hash槽:
redis集群(cluster)并没有使用一致性hash算法,而是使用hash槽(slot)这个概念,
因为一致性hash算法对于数据的分布,节点位置的控制不是很好(在设计时应当尽可能的降低分散性)
hash槽是两个概念
redis 集群(cluster)的hash算法不是简单的hash算法,而是crc16算法,一种校验算法。
槽又是另一种概念,redis cluster包含了16384个hash槽,每个key通过计算后都会落在具体的一个槽位上而这个槽位属于哪个储存节点的由用户自己定义分配,
一致性hash的空间定义成一个圆环,节点是基于圆环的,所以不能很好对的控制数据分布,因此,hash槽很好的解决了一致性hash的弊端
在容错性和扩展性上,与一致性hash算法一致,都是对受影响的数据进行转移。而哈希槽本质上是对槽位的转移,把故障节点负责的槽位转移到其他正常的节点上。扩展节点也是一样,把其他节点上的槽位转移到新的节点上。
但是对于槽位的转移和分派,redis 集群不会自动进行(redis分片中的一致性hash可以实现自动迁移——单调性),而需要