redis哈希槽

集群中内置了16384个哈希槽,当需要在Redis集群中放指有个key-value时,redis先对key使用crc16算法算出一个结果,然后把结果对16384求余数,这样每个key都会对应一个编号在0-16383之间的哈希槽,redis会根据节点数量大致均等的将哈希槽映射到不同的节点。

 

1.Redis 集群没有使用一致性hash, 而是引入了哈希槽的概念。

2.Redis 集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽.集群的每个节点负责一部分hash槽。这种结构很容易添加或者删除节点,并且无论是添加删除或者修改某一个节点,都不会造成集群不可用的状态。

3.使用哈希槽的好处就在于可以方便的添加或移除节点。

4.当需要增加节点时,只需要把其他节点的某些哈希槽挪到新节点就可以了;

5.当需要移除节点时,只需要把移除节点上的哈希槽挪到其他节点就行了;

6.在这一点上,我们以后新增或移除节点的时候不用先停掉所有的 redis 服务。

 

 

还有集群总共有2的14次方,16384个哈希槽,那么每一个哈希槽中存的key 和 value是什么?

当往Redis集群中加入一个key时,会根据crc16(key)mod 16384计算这个key应该分布到那个hash slot中,一个hash slot中会有很多个key和value。

可以理解成表的分区,使用单节点时的redis只有一个表,所有的key都放在这个表里;改用redis cluster以后会自动为你生成16384个分区表,当insert数据时会根据上卖弄的简单算法来决定key应该存在那个分区,每个分区里有很多key。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值