redis集群的slot数据槽映射

redis集群中的slot:
redis Cluster 是redis3.0引入的一种无中心化的集群,客户端可以向任意一个节点通信,不同的节点群之间数据不互通;redis Cluster将数据的key通过CRC16算法的结果并取模16383后,分为16384个slot槽,每个master节点都被分配到一段slot槽中,这个节点只负责管理key映射到这个槽的k-v数据,对于不是当前槽的key的交互,会向客户端发送一个MOVED,表示需要客户端自行重定向其他节点。

JedisCluster对于redisCluster的去中心化的适配方案:
                          在项目启动时建立一条连接获取redis.clusterslot信息,并根据结果创建slot范围和redis连接的映射;对于每次redis请求,都先通过CRC16+取模来计算key对应的槽,再根据存储的映射关系来创建对应的socket套接字连接,若远程返回MOVED,jedis会抛出JedisRedirectionException的子类JedisMovedDataException,此时JedisCluster会刷新缓存的slot和redis连接的映射关系,然后重试请求。

JedisCluster计算CRC16%16384时用的是与运算CRC16&16383;其原理与HashMap的hash过程是完全相同的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值