redis-Cluster集群模式


在应对数据量扩容时,虽然增加内存这种 纵向扩展的方法简单直接,但是会造成数据库的内存过大,导致性能变慢。
Redis切片集群提供了 横向扩展的模式,也就是使用多个实例,并给每个实例配置一定数量的哈希槽,数据可以通过键的哈希值映射到哈希槽,再通过哈希槽分散保存到不同的实例上。
好处是扩展性好,不管有多少数据,切片集群都能应对。

从3.0开始,官方提供了一个名为Redis Cluster的方案,用于实现切片集群。切片集群由多个普通redis服务器组成,大家一起存储全量数据。

当然,数据切片之后也带来了下面几个问题:

数据切片后,在多个实例之间如何分布?

在Redis Cluster方案中,一个切片集群共有16384个哈希槽,这些哈希槽类似于数据分区,每个键值对都会根据它的key,被映射到一个哈希槽中。

客户端如何定位数据?

在对数据库中的16384个槽都进行了指派之后,集群就会进入上线状态,这时客户端就可以向集群中的节点发送数据命令了。

处理流程如下:
在这里插入图片描述

重新分片(slot迁移)

为什么需要重新分片?
在集群中,实例和哈希槽的对应关系并不是一成不变的,最常见的变化有两个:

  • 发生数据的新增或删除,Redis需要重新分配哈希槽;
  • 为了负载均衡,Redis需要把哈希槽在所有实例上重新分布一遍。

重新分片
在实例和哈希槽的对应关系发生变化之后,就需要进行重新分片了,重新分片操作将任意数量已经指派给某个源节点的槽改为指派给另一个目标节点, 并且相关槽所属的键值对也会从源节点被移动到目标节点

重新分片过程
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值