Redis集群简介《Redis开发与运维读书笔记》

本文深入解析Redis集群的数据分布策略,包括节点取余分区、一致性哈希分区和虚拟槽分区,探讨了集群的功能限制、节点通信机制及Gossip协议原理,阐述了集群伸缩、请求路由和故障转移机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Redis集群

数据分布

Redis采用哈希分区规则,常见的哈希分区规则如下:
1)节点取余分区:hash(key)%N = key虽在的节点
2)一致性哈希分区:
为系统的每个节点分配一个token,这些token组成一个hash环。数据读写执行节点查询操作是先 hash(key) 然后顺时针找到第一个大于改哈希值的token节点。
好处:加减节点只影响相邻节点
坏处:加减节点部分无法命中尤其在数据量小时影响比较大,需要增加一倍或减少一半节点才能保证数据和负载的均衡。
3)虚拟槽分区。

虚拟槽分区

Redis集群就是使用的这种虚拟槽分区,Redis集群的槽范围是0-16383(2的14次方=16384 )

  • 解耦数据和节点的关系,简化扩容和收缩维度
  • 节点自身维护槽的迎合关系
  • 支持节点、槽、键之间的映射查询,用于数据路由、在线伸缩等场景

集群功能限制

  • key批量操作支持有限
  • key事物支持有限
  • 不能将大的键值对象如hash、list等映射到不同的节点
  • 不支持多数据库,只支持 db0
  • 复制结构只支持一层,不支持树形复制结构

节点通信

Redis采用P2P的Gossip(留言)协议

Gossip协议原理:
节点间不断通信交换信息,一段时间后所有节点都会知道集群完整的信息。

集群伸缩

集群伸缩 = 槽和数据在节点之间的移动

请求路由

在集群模式下,Redis接收任何键相关命令首先计算键对应的槽,在根据槽找到对应的节点,如果节点是自身则执行命令,否则返回MOVED重定向错误,通知客户端请求正确的节点。

故障转移

Redis Cluster 可以为每个主节点设置若干个从节点,单主节点故障时,集群会自动将其中某个从节点提升为主节点。如果某个主节点没有从节点,那么当它发生故障时,集群将完全处于不可用状态。不过 Redis 也提供了一个参数cluster-require-full-coverage可以允许部分节点故障,其它节点还可以继续提供对外访问。…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值