redis cluster client hash槽的相互关联

推荐一下redis官网http://www.redis.cn/

文档地址:http://www.redis.cn/documentation.html

文章来自于cluster相关的解析主要是集群教程和集群规范

 

hash槽

redis 使用hash槽做分片策略,和hash一致性不太一样。redis集群有16384个哈希槽

请求重定向

简单来说们就是redis cluster在集群之间同步hash槽位的信息。当请求的redis server不对的时候就会把正确的槽位对应的ip返回。client在收到返回后根据返回的槽位和ip信息去连接池获取正确的连接。moved连接会推荐刷新client端 槽位->connection的映射,而ack不会。

这事基于两种情况的,一种是主从切换,那这个时候就是从节点直接替代,之前的节点直接就不再提供服务了。所以使用moved重定向刷新client端缓存。ack重定向呢,就比如槽为迁移的时候,他是一个持续的过程。比如槽位从A迁移到B,可能会持续一段时间,这个时候老的数据都在A,新的数据和部分老的数据在B,在新数据被写入B后,client访问A,A会返回一个ack重定向到B.知道槽位同步完成才会返回moved重定向.

总结-以下的操作都是针对某一个槽位。

 总结起来就是cluster保存有16384个哈希槽和对应的redis节点之间的关系,这个对应关系在主从切换和槽位重分配的时候是会变化的,而redis推荐client缓存槽位到connection的映射。不然一千个主节点的话,几乎每个请求都要重定向了。而moved重定向就是刷新这个缓存的方式。那ack重定向比较特殊,他是槽位迁移的一个过程中产生的,这是一个持续的过程,一个槽位的数据在两个主节点都存在,还都提供服务。比如一个槽位从A迁移到B,client端缓存的就是到A,访问的时候都是先访问A,A不存在再去ack重定向到B,但是由于迁移没有完成我们下一次访问这个槽位还是要第一个访问A,A不存在再ack重定向到B,直到这个槽位迁移完成,才会moved重定向迁移到B.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值