Redis(7)——Redis Cluster

本文深入探讨RedisCluster的原理与实践,包括数据分布理论、基本架构、安装方法、扩容与收缩流程,以及客户端路由机制,是Redis集群应用的全面指南。

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

一、呼唤集群

为什么呼唤?

  • 并发量
  • 数据量

正确的解决方法:

分布式:简单的认为加机器。

二、 数据分布理论

现在有一个全量的数据,但是一个机器已经不能满足存储这么多数据了。所以现在考虑分区
在这里插入图片描述
现在有两种分区方式:顺序分区哈希分区

在这里插入图片描述

在这里插入图片描述

2.1 节点取余分区

在这里插入图片描述

2.2 一致性哈希分区

在这里插入图片描述

2.3 虚拟槽哈希分区

三、Redis Cluster基本架构

在这里插入图片描述

Redis Cluster 安装的架构

在这里插入图片描述

每个节点都会进行读写。
在这里插入图片描述

meet:节点之间是可以相互通信的

在这里插入图片描述

节点A发送节点B一个meetB命令,节点B会返回节点A一个PONG
节点A发送节点C一个meetC命令,节点B会返回节点A一个PONG
这个时候节点B会通过对节点A的一个了解,可以找到对应的节点B
然后他们会根据一定的频率相互交换消息,所有节点都可以进行通信,只有能够通信才能知道节点的槽信息。

在这里插入图片描述

指派槽:只有对节点进行指派槽,才可以正常使用

在这里插入图片描述

现在有3个主节点,A、B和C节点,现在要将16384个槽分配给3个主节点。

在这里插入图片描述
对应客户端,只需要根据key来计算其所属的 slot。

复制:每个主节点都有很多从节点,且这里面有很多主节点。且主节点和从节点之间也有复制,如果主节点挂了,那么从节点可以晋升为主节点。内部监控不会依赖于sentinel,而是通过节点之间监控来实现的。

四、 Redis Cluster安装——原生安装

有两种安装方法:

  • 原生命令的安装
  • 官方工具安装
4.1 理解架构

在这里插入图片描述

  • 【步骤一】首先配置和开启节点

在这里插入图片描述

在这里插入图片描述

这个时候这些节点都是相互独立的,还不能够相互通信。如果想要相互通信,就需要meet。

  • 【步骤二】meet

在这里插入图片描述

在这里插入图片描述

cluster-node-timeout 15000 :故障转移的时间(节点超时的时间):15秒

  • 【步骤三】分配槽

在这里插入图片描述

  • 【步骤四】设置主从

在这里插入图片描述

我们设置了三主三从。

4.2 原生安装——准备节点

首先要在conf文件夹下,配置redis-7000.conf
在这里插入图片描述
在这里插入图片描述
下面我们就可以启动节点了。

启动节点成功后,验证一下节点是否启动成功

在这里插入图片描述

成功启动之后,我们使用客户端连接redis的cluster。之前启动的时候一直都启动不成功,后来我猜是因为我使用的版本是2.8.1太老了,然后我就又下载了4.0.8版本,然后配置都一样,成功启动了。开森!!!
在这里插入图片描述

当设置完了节点之后,我们进入一个客户端,连接端口为7000的服务器,然后set一下,发现报错了,为什么呢?是因为设置完节点之后,还需要设置槽和设置meet。

在这里插入图片描述
我们可以使用这两个命令来查看集群的信息。

4.2 原生安装——节点握手 即meet操作

在这里插入图片描述
在这里插入图片描述
然后我们让7000和7002meet,然后再对7001节点查看,可以看到他和7000和7002都能连接上。因为可以通过7000进行消息传递。

然后通过这个方法让7000和7001、7002、7003、7004、7005都握手之后,他们彼此之间都能知道彼此的存在。

在这里插入图片描述

4.3 原生安装——分配槽

因为有很多机器,所以不能一个机器一个机器的分配槽,所以我们在/redis/下面新创建一个文件夹 script,然后在 script文件夹下创建一个脚本 addslots.sh。在脚本中写分配槽的操作。

在这里插入图片描述

4.3 原生安装——分配主从

在这里插入图片描述
要cluster replicate 主节点的 id号。

在这里插入图片描述

这样主从节点就分配完了,可以看到主从节点的状态。

五、 Redis Cluster安装——Ruby安装

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.1 ruby 环境准备——操作

在这里插入图片描述

六、 扩容集群

在这里插入图片描述

  • 【第一步】首先准备新节点
    在这里插入图片描述

  • 【第二步】加入集群

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 【第三步】偏移槽和迁移数据

在这里插入图片描述
每个原来的节点的槽分配一些槽给新进来的节点,上图中就是6379、6380和6381节点槽数据迁移一部分到6385中

在这里插入图片描述
在这里插入图片描述
将非过期数据和过期数据都置为过期数据,这样会丢失数据。但是在3.2.8已经修改了这个 bug。

  • 【第四步】添加从节点

七、收缩集群

在这里插入图片描述

7.1 下线迁移槽

在这里插入图片描述

就是下线节点的槽迁移到其他节点上。

7.2 忘记节点

在这里插入图片描述

八、客户端路由

在这里插入图片描述

8.1 moved 重定向

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

当使用-c之后是告诉他使用集群模式,所以如果插入的数据槽不命中,他会自动转化到对应的槽的节点上,当执行完上述命令行后,会自动跳转到转换的节点上。

在这里插入图片描述
这句命令行来查看 hello 可以被分配到哪个槽上。

8.2 ASK重定向

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

8.2 smart
  • 从集群中选一个可运行节点,使用 cluster slots 初始化槽和节点映射
  • 将 cluster slots 的结果映射到本地,为每个节点创建 JedisPool
  • 准备执行命令

在这里插入图片描述

JedisCluster 内部有 key 和 slot 的关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值