Redis Cluster的原理解析

Redis Cluster提供集群功能,解决单机内存限制问题。它采用虚拟槽分区,每个节点负责一部分槽及键值数据。HashTags保证相关联键的分布式一致性。在节点变化时,槽会进行迁移,客户端在重定向后能访问正确节点。集群通过无中心化的gossip协议维持状态。
摘要由CSDN通过智能技术生成

1.为什么需要Redis集群?

  即使Redis使用了哨兵,此时的Redis集群中每个数据库依然存有集群中的所有数据,从而导致集群的总数据存储量受限于可用存储内存最小的节点,形成了木桶效应。而因为Redis是基于内存存储的,所以这一个问题在redis中就显得尤为突出了。

  在redis3.0之前,我们是通过在客户端去做的分片,通过hash环(一致性hash)的方式对key进行分片存储。分片虽然能够解决各个节点的存储压力,但是导致维护成本高、增加、移除节点比较繁琐。

  因此在redis3.0以后的版本最大的一个好处就是支持集群功能,集群的特点在于拥有和单机实例一样的性能,同时在网络分区以后能够提供一定的可访问性以及对主数据库故障恢复的支持。

  哨兵和集群是两个独立的功能,当不需要对数据进行分片使用哨兵就够了,如果要进行水平扩容,集群是一个比较好的方式。

2.拓扑结构

  一个Redis Cluster由多个Redis节点构成。不同节点组服务的数据没有交集,也就是每一个节点组对应数据sharding的一个分片。节点组内部分为主备两类节点,对应master和slave节点。两者数据准实时一致,通过异步化的主备复制机制来保证。一个节点组有且只有一个master节点,同时可以有0到多个slave节点,在这个节点组中

只有master节点对用户提供写服务,读服务可以由master或者slave提供。

  redis-cluste

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值