redis集群如果保证数据一致性_Redis集群之Cluster

本文介绍了Redis集群中为解决新增节点全量复制问题采用的一致性哈希算法,包括槽的概念和如何保证数据均匀分布。还讨论了槽迁移过程,涉及MOVED和ASKING指令,确保集群在迁移过程中仍能对外提供服务。
摘要由CSDN通过智能技术生成

  上一篇阐述了redis的主从、哨兵模式,现在我们要新增一个节点到哨兵模式里面,应该怎么做呢?是否需要把redis主节点的所有键值全部复制到新增节点中呢?全量复制是否对集群的性能会产生影响呢?

  为了解决新增节点全量复制的问题,cluster的解决方案也就应运而生。

  假设目前存在5台redis集群,每台存储的键值对不是全量的,键值对存储的方式是使用哈希的方式,取模后落到对应机器台数上。假如redis节点不新增不删除,这种方式几乎没什么错误。那假如要新增一台机器呢?原先redis的取模除数+1,可想而知原先存储到前5台机器上的键值对的查找都会发生错误。

   1、一致性哈希算法是怎么保证数据均匀分布的呢?

  一致性哈希算法中存在一个slot槽的概念。redis集群每次新增节点都是对已知的槽节点进行分配。一致性哈希算法提供了一个哈希环,环中分配了2^32个槽。我们知道key值每次进行存储的时候都会通过crc16算法进行确定key值放置到哪个槽节点中,其实可以简单的理解成为取模16384。也就保证数据均匀分布在哈希槽里面。

  一致性哈希算法为了解决数据倾斜的问题,提供了一个虚拟节点的概念,物理节点多次哈希之后会生成多个虚拟节点,每个物理节点管理这些虚拟节点,虚拟节点会均匀分布到哈希环上。

9d68051806e450f8e22eddda07fc6fc5.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值