4-redis分片集群

发布于:2025-02-10 ⋅ 阅读:(40) ⋅ 点赞:(0)

本文介绍redis分片集群的搭建,基于redis7.0版本。redis分片集群解决了海量数据存储的高并发读写问题,当数据大到一台服务器搞不定的情况下,就要考虑向分片集群演化。下面是咱们这次搭建的分片集群的规划图:

0、规划

在这里插入图片描述

由图可见,3个master,一主一从,总共6个redis实例。咱们下面开始。

1、搭建

以master-01实例为例,先准备配置文件。其他几个实例,按照规划修改相应配置即可,此处不再赘述。

1.1、master-01实例配置文件

port 6379

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

# 每个redis实例,要配置不同的工作目录
dir /Users/jackie/dev/redis7-cluster/tmp2

# bind 0.0.0.0

# daemonize yes

protected-mode no

# logfile /tmp/redis/redis.log

保存master-01配置文件为redis-01.conf。所有的配置文件准备好了后,咱们分别启动6个redis。

redis-server redis-01.conf

1.2、分片集群

redis-cli --cluster create --cluster-replicas 1 127.0.0.1:6379 127.0.0.1:6383 127.0.0.1:6387 127.0.0.1:6381 127.0.0.1:6385 127.0.0.1:6389

命令解释:

  • create: 创建集群。
  • –cluster-replicas 1:集群中,每个master有一个replica。
  • ip: port: 集群中所有的机器的ip和端口,在这里,前三个是master,后三个是slave。

注意:redis-cli命令默认连接的是127.0.0.1: 6379,敲命令时可以不写,如果不是,要加上-h -p参数。

在这里插入图片描述
看上图,分配了3个mster和3个slave,也指出了slave归属于哪个master。按照提示咱们输入“yes",再看效果:
在这里插入图片描述
可以看到,redis已经将16384个slot平均分配到3个master上了,上图中红色标注的地方。
咱们再用命令看一下集群状态:

redis-cli cluster nodes

在这里插入图片描述

2、测试

redis-cli 
set k1 hello

在这里插入图片描述
报错了,连接是加上 -c 参数,开启集群模式。

redis-cli -c

3、添加一个新节点

给redis分片集群里添加一个新节点的步骤:

  1. 配置并启动redis实例。
  2. 往集群里加入新节点。
    命令:redis-cli --cluster add-node <新加入的节点ip:端口> <原有节点ip:端口>
  3. 给新节点分配slot。
    命令:redis-cli --cluster reshard <新加入的节点ip:端口>

下面咱们按照步骤一个个来。

3.1、配置并启动新的redis实例

和上面一样,我们先准备配置文件,再启动redis。这里新添加的redis实例端口是6399。

redis-server redis-new-add.conf

3.2、往集群中加入新节点

启动完成后,命令行连接执行:

redis-cli --cluster add-node 127.0.0.1:6399 127.0.0.1:6379

命令里有两个ip,第一个是新节点,第二个是集群中已有的节点,随便写一个已有的即可。结果如下:

在这里插入图片描述
看一下集群的状态,目前的角色是master,并且上面没有slot。
在这里插入图片描述

3.3、给新节点分配slot

下面给新加的节点分配slot,执行命令:

redis-cli --cluster reshard 127.0.0.1:6399

此时,redis会询问要移动多少个slot,我们输入3000,当然你按自己的规划来。我们从6379节点移动3000个slot到6399节点。
在这里插入图片描述
输入3000后,会询问接收节点的id,填入6399的id号,从上面的列表就能找到,就是我第一个标红的位置。
在这里插入图片描述
这时,redis询问移动的源节点id,看提示有两个选项。

  • all:表示从所有节点移动。
  • done:表示要用户输入源id,可以输入多个。这里注意一行一个id,最后一行输入‘done’。

咱们这里输入6379的id号,完了在输入‘done’。最后redis让我们确认,我们输入‘yes’即可。等待移动完成,咱们再看一下此时集群的节点信息,如下图:
在这里插入图片描述
可以看到,6399上已经有了3000个slot。

4、结束

好了,redis的分片集群就搭建完成了。就到这里啦。
//~~


网站公告

今日签到

点亮在社区的每一天
去签到