redis-5.0.5 利用redis-cli搭建集群,并扩缩容分片

背景:安装redis-5.0.5,使用redis-cli搭建redis集群,并扩缩分片。

安装redis-5.0.5

1、官网下载redis-5.0.5.tar.gz,并上传到服务器上。

2、我这里将redis-5.0.5.tar.gz上传至/usr/local/src目录下。

[root@localhost src]# ll /usr/local/src/redis-5.0.5.tar.gz
-rw-r--r--. 1 root root 1975750 May 25 00:13 /usr/local/src/redis-5.0.5.tar.gz

3、解压redis-5.0.5.tar.gz。

[root@localhost src]# tar -zxf redis-5.0.5.tar.gz

4、进入解压后的目录,进行安装。

[root@localhost src]# cd redis-5.0.5/

然后输入make && make install 进行编译安装:
[root@localhost redis-5.0.5]# make && make install

.................

make[1]: Leaving directory `/usr/local/src/redis-5.0.5/src'
[root@localhost redis-5.0.5]#

然后将启动文件拷贝至/usr/bin下:
[root@localhost redis-5.0.5]# cp src/redis-server /usr/bin/

5、查看redis版本,可以看到redis已经安装成功

[root@localhost ~]# redis-server --version
Redis server v=5.0.5 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=e53c2b8a69fecf7d

创建redis实例

redis集群默认至少需要3主3从,所以至少需要6个节点,在生成环境中,分片的主从都不是在一台机器上的,这也是分片的意义,这里是只是简单的搭建,所以只是在一台机器上创建了6个redis实例进行搭建(我这里搭建集群的机器ip地址是:192.168.222.133)。

1、创建6个redis实例,所以需要6个端口,我这里创建了6个目录,用作redis实例的数据和配置文件存放的目录,数据目录最好创建在数据盘。

[root@localhost ~]# mkdir /data/7000
[root@localhost ~]# mkdir /data/7001
[root@localhost ~]# mkdir /data/8000
[root@localhost ~]# mkdir /data/8001
[root@localhost ~]# mkdir /data/9000
[root@localhost ~]# mkdir /data/9001

2、创建redis实例的配置文件,将该配置文件拷贝到其它5个目录,且文件名、文件内容中的端口替换为对应端口即可。这些配置是简单的配置,需要添加其它参数的话自行添加。

[root@localhost 7000]# cat /data/7000/redis-7000.conf
# 修改为后台启动
daemonize yes
#bind
bind 192.168.222.133
# 修改端口号
port 7000
# 指定数据文件存储位置
dir /data/7000/
# 开启集群模式
cluster-enabled yes
# 集群节点超时间
cluster-node-timeout 15000
# 关闭保护模式
protected-mode no
# 开启aof模式持久化
appendonly yes
# 设置连接Redis需要密码123(选配)
#requirepass 123456
# 设置Redis节点与节点之间访问需要密码123(选配)
#masterauth 123456

3、配置文件拷贝、修改完成后,启动6个redis实例。

[root@localhost ~]# redis-server /data/7000/redis-7000.conf
[root@localhost ~]# redis-server /data/7001/redis-7001.conf
[root@localhost ~]# redis-server /data/8000/redis-8000.conf
[root@localhost ~]# redis-server /data/8001/redis-8001.conf
[root@localhost ~]# redis-server /data/9000/redis-9000.conf
[root@localhost ~]# redis-server /data/9001/redis-9001.conf

4、查看redis实例启动情况,可以看到6个实例都正常。

[root@localhost ~]# ps aux | grep redis | grep -v grep
root       2887  0.1  0.1 163216 11776 ?        Ssl  23:42   0:00 redis-server 192.168.222.133:7000 [cluster]
root       2892  0.2  0.1 154000  7684 ?        Ssl  23:42   0:00 redis-server 192.168.222.133:7001 [cluster]
root       2911  0.1  0.1 154000  7684 ?        Ssl  23:43   0:00 redis-server 192.168.222.133:8000 [cluster]
root       2920  0.1  0.1 154000  7684 ?        Ssl  23:43   0:00 redis-server 192.168.222.133:8001 [cluster]
root       2929  0.1  0.1 154000  7684 ?        Ssl  23:43   0:00 redis-server 192.168.222.133:9000 [cluster]
root       2938  0.1  0.1 154000  7684 ?        Ssl  23:43   0:00 redis-server 192.168.222.133:9001 [cluster]

搭建redis集群

1、利用6个redis实例,搭建3主3从redis集群,使用以下命令搭建redis集群。

搭建集群的命令:redis-cli --cluster create 192.168.222.133:7000 192.168.222.133:8000 192.168.222.133:9000 192.168.222.133:7001 192.168.222.133:8001 192.168.222.133:9001 --cluster-replicas 1

#--cluster-replicas 1 表示从库为1个实例
#这里控制不了谁是主谁是从,但是如果有三台机器的话,主从默认不会在一个机器上


这是我执行命令后的输出情况,可以看到搭建集群成功,也分配了对应的槽位:
[root@localhost ~]# redis-cli --cluster create 192.168.222.133:7000 192.168.222.133:8000 192.168.222.133:9000 192.168.222.133:7001 192.168.222.133:8001 192.168.222.133:9001 --cluster-replicas 1
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.222.133:8001 to 192.168.222.133:7000
Adding replica 192.168.222.133:9001 to 192.168.222.133:8000
Adding replica 192.168.222.133:7001 to 192.168.222.133:9000
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 532617682328eee2853ed10f8e7bf5f5f900ab5f 192.168.222.133:7000
   slots:[0-5460] (5461 slots) master
M: ad413b85bea8dffa4ed78286a483b0f078e76725 192.168.222.133:8000
   slots:[5461-10922] (5462 slots) master
M: 7d138927259fd5a6847d27c56af05b6f727e379b 192.168.222.133:9000
   slots:[10923-16383] (5461 slots) master
S: e54654f032713280383077d5d677bf6702affcfc 192.168.222.133:7001
   replicates ad413b85bea8dffa4ed78286a483b0f078e76725
S: d6225c2e8b2e3b19f608c082b2d24a6c87b1c424 192.168.222.133:8001
   replicates 7d138927259fd5a6847d27c56af05b6f727e379b
S: 0bbb8ba6dd94e0897b26e581d5a9f1bec4157759 192.168.222.133:9001
   replicates 532617682328eee2853ed10f8e7bf5f5f900ab5f
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
.........
>>> Performing Cluster Check (using node 192.168.222.133:7000)
M: 532617682328eee2853ed10f8e7bf5f5f900ab5f 192.168.222.133:7000
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: e54654f032713280383077d5d677bf6702affcfc 192.168.222.133:7001
   slots: (0 slots) slave
   replicates ad413b85bea8dffa4ed78286a483b0f078e76725
S: d6225c2e8b2e3b19f608c082b2d24a6c87b1c424 192.168.222.133:8001
   slots: (0 slots) slave
   replicates 7d138927259fd5a6847d27c56af05b6f727e379b
S: 0bbb8ba6dd94e0897b26e581d5a9f1bec4157759 192.168.222.133:9001
   slots: (0 slots) slave
   replicates 532617682328eee2853ed10f8e7bf5f5f900ab5f
M: 7d138927259fd5a6847d27c56af05b6f727e379b 192.168.222.133:9000
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
M: ad413b85bea8dffa4ed78286a483b0f078e76725 192.168.222.133:8000
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@localhost ~]#

2、随便进入一个节点,使用redis nodes 查看redis集群情况,可以看到3主3从的redis集群搭建成功。

[root@localhost ~]# redis-cli -c -h 192.168.222.133 -p 7000
192.168.222.133:7000> cluster nodes
532617682328eee2853ed10f8e7bf5f5f900ab5f 192.168.222.133:7000@17000 myself,master - 0 1719071708000 1 connected 0-5460
e54654f032713280383077d5d677bf6702affcfc 192.168.222.133:7001@17001 slave ad413b85bea8dffa4ed78286a483b0f078e76725 0 1719071711069 4 connected
d6225c2e8b2e3b19f608c082b2d24a6c87b1c424 192.168.222.133:8001@18001 slave 7d138927259fd5a6847d27c56af05b6f727e379b 0 1719071707964 5 connected
0bbb8ba6dd94e0897b26e581d5a9f1bec4157759 192.168.222.133:9001@19001 slave 532617682328eee2853ed10f8e7bf5f5f900ab5f 0 1719071708000 6 connected
7d138927259fd5a6847d27c56af05b6f727e379b 192.168.222.133:9000@19000 master - 0 1719071710000 3 connected 10923-16383
ad413b85bea8dffa4ed78286a483b0f078e76725 192.168.222.133:8000@18000 master - 0 1719071710040 2 connected 5461-10922
192.168.222.133:7000>

redis集群缩容分片

1、查看集群情况,目前redis集群是3主3从,并且都已经分配了槽位。

[root@localhost ~]# redis-cli -c -h 192.168.222.133 -p 7000
192.168.222.133:7000> cluster nodes
532617682328eee2853ed10f8e7bf5f5f900ab5f 192.168.222.133:7000@17000 myself,master - 0 1719071708000 1 connected 0-5460
e54654f032713280383077d5d677bf6702affcfc 192.168.222.133:7001@17001 slave ad413b85bea8dffa4ed78286a483b0f078e76725 0 1719071711069 4 connected
d6225c2e8b2e3b19f608c082b2d24a6c87b1c424 192.168.222.133:8001@18001 slave 7d138927259fd5a6847d27c56af05b6f727e379b 0 1719071707964 5 connected
0bbb8ba6dd94e0897b26e581d5a9f1bec4157759 192.168.222.133:9001@19001 slave 532617682328eee2853ed10f8e7bf5f5f900ab5f 0 1719071708000 6 connected
7d138927259fd5a6847d27c56af05b6f727e379b 192.168.222.133:9000@19000 master - 0 1719071710000 3 connected 10923-16383
ad413b85bea8dffa4ed78286a483b0f078e76725 192.168.222.133:8000@18000 master - 0 1719071710040 2 connected 5461-10922
192.168.222.133:7000>

2、准备缩容掉master:192.168.222.133:9000,slave:192.168.222.133:8001这两个分片。先下掉slave:192.168.222.133:8001

删除从节点的命令:redis-cli --cluster del-node <ip:port> <node-ip>

我这里执行的情况:

[root@localhost ~]# redis-cli --cluster del-node 192.168.222.133:8001 d6225c2e8b2e3b19f608c082b2d24a6c87b1c424
>>> Removing node d6225c2e8b2e3b19f608c082b2d24a6c87b1c424 from cluster 192.168.222.133:8001
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
[root@localhost ~]#

3、slave节点删除成功后,需要下掉master:192.168.222.133:9000,删除master,必须先要将槽位分配走,然后再删除。这里将master: 192.168.222.133:9000的槽位分配给:master: 192.168.222.133:8000

重新分配,输入;
步骤1:redis-cli --cluster reshard <需要删除节点IP:port>
步骤2: 5461  #这里表示需要挪动的槽位数量,9000端口负责了5461个槽位,所以输入5461
步骤2:ad413b85bea8dffa4ed78286a483b0f078e76725   #这里填谁分配出槽位的节点node-id,所以里这是9000的node-id
步骤3:7d138927259fd5a6847d27c56af05b6f727e379b   #这里填谁来接受槽位的节点node-id,所以这里是8000的node-id
步骤4:done  #输入done,可以理解为开始分配
步骤5:yes   #类似确认


以下是我分配的情况,输入的步骤:


[root@localhost ~]# redis-cli --cluster reshard 192.168.222.133:9000
>>> Performing Cluster Check (using node 192.168.222.133:9000)
M: 7d138927259fd5a6847d27c56af05b6f727e379b 192.168.222.133:9000
   slots:[10923-16383] (5461 slots) master
S: 0bbb8ba6dd94e0897b26e581d5a9f1bec4157759 192.168.222.133:9001
   slots: (0 slots) slave
   replicates 532617682328eee2853ed10f8e7bf5f5f900ab5f
M: ad413b85bea8dffa4ed78286a483b0f078e76725 192.168.222.133:8000
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: e54654f032713280383077d5d677bf6702affcfc 192.168.222.133:7001
   slots: (0 slots) slave
   replicates ad413b85bea8dffa4ed78286a483b0f078e76725
M: 532617682328eee2853ed10f8e7bf5f5f900ab5f 192.168.222.133:7000
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
How many slots do you want to move (from 1 to 16384)? 5461
What is the receiving node ID? ad413b85bea8dffa4ed78286a483b0f078e76725
Please enter all the source node IDs.
  Type 'all' to use all the nodes as source nodes for the hash slots.
  Type 'done' once you entered all the source nodes IDs.
Source node #1: 7d138927259fd5a6847d27c56af05b6f727e379b
Source node #2: done

4、查看master: 192.168.222.133:9000的槽位确实已经分配给了:master: 192.168.222.133:8000

[root@localhost ~]# redis-cli -c -h 192.168.222.133 -p 7000
192.168.222.133:7000> cluster nodes
532617682328eee2853ed10f8e7bf5f5f900ab5f 192.168.222.133:7000@17000 myself,master - 0 1719073472000 1 connected 0-5460
e54654f032713280383077d5d677bf6702affcfc 192.168.222.133:7001@17001 slave ad413b85bea8dffa4ed78286a483b0f078e76725 0 1719073471990 7 connected
0bbb8ba6dd94e0897b26e581d5a9f1bec4157759 192.168.222.133:9001@19001 slave 532617682328eee2853ed10f8e7bf5f5f900ab5f 0 1719073474050 6 connected
7d138927259fd5a6847d27c56af05b6f727e379b 192.168.222.133:9000@19000 master - 0 1719073473018 3 connected
ad413b85bea8dffa4ed78286a483b0f078e76725 192.168.222.133:8000@18000 master - 0 1719073475076 7 connected 5461-16383
192.168.222.133:7000>

5、删除master: 192.168.222.133:9000节点。

[root@localhost ~]#  redis-cli --cluster del-node 192.168.222.133:9000 7d138927259fd5a6847d27c56af05b6f727e379b
>>> Removing node 7d138927259fd5a6847d27c56af05b6f727e379b from cluster 192.168.222.133:9000
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
[root@localhost ~]#

6、查看整个集群的状态,可以看到master:192.168.222.133:9000,slave:192.168.222.133:8001这两个分片已经缩容掉,而且槽位也已经由 192.168.222.133:8000负责。

[root@localhost ~]# redis-cli -c -h 192.168.222.133 -p 7000
192.168.222.133:7000> cluster nodes
532617682328eee2853ed10f8e7bf5f5f900ab5f 192.168.222.133:7000@17000 myself,master - 0 1719073654000 1 connected 0-5460
e54654f032713280383077d5d677bf6702affcfc 192.168.222.133:7001@17001 slave ad413b85bea8dffa4ed78286a483b0f078e76725 0 1719073656652 7 connected
0bbb8ba6dd94e0897b26e581d5a9f1bec4157759 192.168.222.133:9001@19001 slave 532617682328eee2853ed10f8e7bf5f5f900ab5f 0 1719073654568 6 connected
ad413b85bea8dffa4ed78286a483b0f078e76725 192.168.222.133:8000@18000 master - 0 1719073655614 7 connected 5461-16383
192.168.222.133:7000>

redis集群扩容分片

1、查看集群情况,目前redis集群是2主2从,并且都已经分配了槽位。

[root@localhost ~]# redis-cli -c -h 192.168.222.133 -p 7000
192.168.222.133:7000> cluster nodes
532617682328eee2853ed10f8e7bf5f5f900ab5f 192.168.222.133:7000@17000 myself,master - 0 1719073654000 1 connected 0-5460
e54654f032713280383077d5d677bf6702affcfc 192.168.222.133:7001@17001 slave ad413b85bea8dffa4ed78286a483b0f078e76725 0 1719073656652 7 connected
0bbb8ba6dd94e0897b26e581d5a9f1bec4157759 192.168.222.133:9001@19001 slave 532617682328eee2853ed10f8e7bf5f5f900ab5f 0 1719073654568 6 connected
ad413b85bea8dffa4ed78286a483b0f078e76725 192.168.222.133:8000@18000 master - 0 1719073655614 7 connected 5461-16383
192.168.222.133:7000>

2、准备两个redis实例为192.168.222.133:9000,192.168.222.133:8001,并将这两个分片到集群中,期望将192.168.222.133:9000设置为master,192.168.222.133:8001设置为slave。先将192.168.222.133:9000加入集群中:

将节点加入集群的命令:redis-cli --cluster add-node <新加入节点的IP:port>  <已经在集群中的任意节点IP:port>

我这里执行的情况,可以看到加入成功:

[root@localhost 8001]# redis-cli --cluster add-node 192.168.222.133:9000 192.168.222.133:7000
>>> Adding node 192.168.222.133:9000 to cluster 192.168.222.133:7000
>>> Performing Cluster Check (using node 192.168.222.133:7000)
M: 532617682328eee2853ed10f8e7bf5f5f900ab5f 192.168.222.133:7000
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: e54654f032713280383077d5d677bf6702affcfc 192.168.222.133:7001
   slots: (0 slots) slave
   replicates ad413b85bea8dffa4ed78286a483b0f078e76725
S: 0bbb8ba6dd94e0897b26e581d5a9f1bec4157759 192.168.222.133:9001
   slots: (0 slots) slave
   replicates 532617682328eee2853ed10f8e7bf5f5f900ab5f
M: ad413b85bea8dffa4ed78286a483b0f078e76725 192.168.222.133:8000
   slots:[5461-16383] (10923 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 192.168.222.133:9000 to make it join the cluster.
[OK] New node added correctly.

3、可以看到192.168.222.133:9000加入了集群,但是没有槽位。

[root@localhost 8001]# redis-cli -c -h 192.168.222.133 -p 7000
192.168.222.133:7000> cluster nodes
532617682328eee2853ed10f8e7bf5f5f900ab5f 192.168.222.133:7000@17000 myself,master - 0 1719074087000 1 connected 0-5460
e54654f032713280383077d5d677bf6702affcfc 192.168.222.133:7001@17001 slave ad413b85bea8dffa4ed78286a483b0f078e76725 0 1719074089116 7 connected
0bbb8ba6dd94e0897b26e581d5a9f1bec4157759 192.168.222.133:9001@19001 slave 532617682328eee2853ed10f8e7bf5f5f900ab5f 0 1719074087021 6 connected
3cd072d1e134af85e80858993b498958279e321f 192.168.222.133:9000@19000 master - 0 1719074088000 0 connected
ad413b85bea8dffa4ed78286a483b0f078e76725 192.168.222.133:8000@18000 master - 0 1719074089000 7 connected 5461-16383
192.168.222.133:7000>

4、分配槽位给192.168.222.133:9000节点。这里将master:192.168.222.133:8000的5641个端口分配给192.168.222.133:9000

重新分配,输入:
步骤1:redis-cli --cluster reshard <需要新分配槽位的节点IP:port>
步骤2: 5461  #这里表示需要挪动槽位数量,所以输入5461
步骤2:3cd072d1e134af85e80858993b498958279e321f   #这里填谁来接受槽位的节点node-id,所以这里是9000的node-id
步骤3:ad413b85bea8dffa4ed78286a483b0f078e76725   #这里填谁分配出槽位的节点node-id,所以里这是8000的node-id
步骤4:done  #输入done,可以理解为开始分配
步骤5:yes   #类似确认

以下是我分配的情况,输入的步骤:

[root@localhost 8001]# redis-cli --cluster reshard 192.168.222.133:9000
>>> Performing Cluster Check (using node 192.168.222.133:9000)
M: 3cd072d1e134af85e80858993b498958279e321f 192.168.222.133:9000
   slots: (0 slots) master
M: ad413b85bea8dffa4ed78286a483b0f078e76725 192.168.222.133:8000
   slots:[5461-16383] (10923 slots) master
   1 additional replica(s)
S: e54654f032713280383077d5d677bf6702affcfc 192.168.222.133:7001
   slots: (0 slots) slave
   replicates ad413b85bea8dffa4ed78286a483b0f078e76725
M: 532617682328eee2853ed10f8e7bf5f5f900ab5f 192.168.222.133:7000
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: 0bbb8ba6dd94e0897b26e581d5a9f1bec4157759 192.168.222.133:9001
   slots: (0 slots) slave
   replicates 532617682328eee2853ed10f8e7bf5f5f900ab5f
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
How many slots do you want to move (from 1 to 16384)? 5641
What is the receiving node ID? 3cd072d1e134af85e80858993b498958279e321f
Please enter all the source node IDs.
  Type 'all' to use all the nodes as source nodes for the hash slots.
  Type 'done' once you entered all the source nodes IDs.
Source node #1: ad413b85bea8dffa4ed78286a483b0f078e76725
Source node #2: done

5、可以看到槽位已经分配成功。

[root@localhost 8001]# redis-cli -c -h 192.168.222.133 -p 7000
192.168.222.133:7000> cluster nodes
532617682328eee2853ed10f8e7bf5f5f900ab5f 192.168.222.133:7000@17000 myself,master - 0 1719074539000 1 connected 0-5460
e54654f032713280383077d5d677bf6702affcfc 192.168.222.133:7001@17001 slave ad413b85bea8dffa4ed78286a483b0f078e76725 0 1719074540000 7 connected
0bbb8ba6dd94e0897b26e581d5a9f1bec4157759 192.168.222.133:9001@19001 slave 532617682328eee2853ed10f8e7bf5f5f900ab5f 0 1719074540722 6 connected
3cd072d1e134af85e80858993b498958279e321f 192.168.222.133:9000@19000 master - 0 1719074537000 8 connected 5461-11101
ad413b85bea8dffa4ed78286a483b0f078e76725 192.168.222.133:8000@18000 master - 0 1719074539000 7 connected 11102-16383

6、给master:192.168.222.133:9000 添加slave:192.168.222.133:8001

给master加slave的命令:redis-cli --cluster add-node <slave节点ip:port> <master节点ip:port> --cluster-slave <master节点的nodes-id> 

以下是我执行的情况,执行成功:

[root@localhost 8001]# redis-cli --cluster add-node 192.168.222.133:8001 192.168.222.133:9000  --cluster-slave --cluster-master-id  3cd072d1e134af85e80858993b498958279e321f
>>> Adding node 192.168.222.133:8001 to cluster 192.168.222.133:9000
>>> Performing Cluster Check (using node 192.168.222.133:9000)
M: 3cd072d1e134af85e80858993b498958279e321f 192.168.222.133:9000
   slots:[5461-11101] (5641 slots) master
M: ad413b85bea8dffa4ed78286a483b0f078e76725 192.168.222.133:8000
   slots:[11102-16383] (5282 slots) master
   1 additional replica(s)
S: e54654f032713280383077d5d677bf6702affcfc 192.168.222.133:7001
   slots: (0 slots) slave
   replicates ad413b85bea8dffa4ed78286a483b0f078e76725
M: 532617682328eee2853ed10f8e7bf5f5f900ab5f 192.168.222.133:7000
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: 0bbb8ba6dd94e0897b26e581d5a9f1bec4157759 192.168.222.133:9001
   slots: (0 slots) slave
   replicates 532617682328eee2853ed10f8e7bf5f5f900ab5f
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 192.168.222.133:8001 to make it join the cluster.
Waiting for the cluster to join

>>> Configure node as replica of 192.168.222.133:9000.
[OK] New node added correctly.

7、可以看到集群扩容成功,且槽位也分配完成。

[root@localhost 8001]# redis-cli -c -h 192.168.222.133 -p 7000
192.168.222.133:7000> cluster nodes
532617682328eee2853ed10f8e7bf5f5f900ab5f 192.168.222.133:7000@17000 myself,master - 0 1719075042000 1 connected 0-5460
f865c91682b0db91298601755150d7fcc8af5e94 192.168.222.133:8001@18001 slave 3cd072d1e134af85e80858993b498958279e321f 0 1719075045399 8 connected
e54654f032713280383077d5d677bf6702affcfc 192.168.222.133:7001@17001 slave ad413b85bea8dffa4ed78286a483b0f078e76725 0 1719075043342 7 connected
0bbb8ba6dd94e0897b26e581d5a9f1bec4157759 192.168.222.133:9001@19001 slave 532617682328eee2853ed10f8e7bf5f5f900ab5f 0 1719075044364 6 connected
3cd072d1e134af85e80858993b498958279e321f 192.168.222.133:9000@19000 master - 0 1719075043000 8 connected 5461-11101
ad413b85bea8dffa4ed78286a483b0f078e76725 192.168.222.133:8000@18000 master - 0 1719075041000 7 connected 11102-16383
192.168.222.133:7000>

以上就是redis搭建集群、扩缩容分片。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/734859.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java收徒 java辅导 java试用期辅导 java零基础学习

&#x1f497;博主介绍&#xff1a;✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末报名辅导&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还有大家…

WinMerge v2 (开源的文件比较/合并工具)

前言 WinMerge 是一款运行于Windows系统下的免费开源的文件比较/合并工具&#xff0c;使用它可以非常方便地比较多个文档内容甚至是文件夹与文件夹之间的文件差异。适合程序员或者经常需要撰写文稿的朋友使用。 一、下载地址 下载链接&#xff1a;http://dygod/source 点击搜…

微信小程序-伪类选择器

一.伪类选择器 结构伪类常见书写方式&#xff1a; 第一类&#xff1a;找第几个孩子 1. :first-child 找第一个孩子2. :last-child 找最后一个孩子3. :nth-child()&#xff0c;正着找数字&#xff1a;写数字几就是找第几个孩子&#xff0c;2n或者even:找偶数2n1或者o…

python数据分析案例-信用卡违约预测分析

一、研究背景和意义 信用卡已经成为现代社会中人们日常生活中不可或缺的支付工具&#xff0c;它不仅为消费者提供了便利&#xff0c;还为商家提供了更广泛的销售渠道。然而&#xff0c;随着信用卡的普及和使用量的增加&#xff0c;信用卡违约问题逐渐成为金融机构面临的重要挑…

Java基础的重点知识-03-方法与数组

文章目录 方法数组 方法 定义方法的格式详解 修饰符 返回值类型 方法名(参数列表){//代码省略...return 结果; }修饰符&#xff1a; public static 固定写法返回值类型&#xff1a; 表示方法运行的结果的数据类型&#xff0c;方法执行后将结果返回到调用者参数列表&#xff1…

Pytho字符串的定义与操作

一、字符串的定义 Python 字符串是字符的序列&#xff0c;用于存储文本数据。字符串可以包括字母、数字、符号和空格。在 Python 中&#xff0c;字符串是不可变的&#xff0c;这意味着一旦创建了一个字符串&#xff0c;就不能更改其中的字符。但是&#xff0c;你可以创建新的字…

一文读懂LLM API应用开发基础(万字长文)

前言 Hello&#xff0c;大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;一名热爱AI技术的GIS开发者&#xff0c;上一篇文章中我们详细介绍了LLM开发的基本概念&#xff0c;包括LLM的模型、特点能力以及应用&#xff1b;&#x1f632; 在本文中作者将通过&#xff1a…

Flutter ListView详解

文章示例代码 ListView常用构造 ListView 我们可以直接使用ListView 它的实现也是直接返回最简单的列表结构&#xff0c;粗糙没有修饰。 ListView 默认构建 效果 ///默认构建 Widget listViewDefault(List list) { List _list new List(); for (int i 0; i < list.le…

Java学习 - 网络IP协议簇 讲解

IP协议 IP协议全称 Internet Protocol互联网互连协议 IP协议作用 实现数据在网络节点上互相传输 IP协议特点 不面向连接不保证可靠 IP协议数据报结构 组成说明版本目前有IPv4和IPv6两种版本首部长度单位4字节&#xff0c;所以首部长度最大为 15 * 4 60字节区分服务不同…

视觉新纪元:解码LED显示屏的视角、可视角、最佳视角的最终奥秘

在璀璨夺目的LED显示屏世界里&#xff0c;每一个绚烂画面的背后&#xff0c;都离不开三个关键概念&#xff1a;视角、可视角与最佳视角。这些术语不仅是衡量显示效果的重要标尺&#xff0c;也是连接观众与精彩内容的桥梁。让我们一起走进这场视觉盛宴&#xff0c;探索那些让LED…

做Android开发怎么才能不被淘汰?

多学一项技能&#xff0c;可能就会成为你升职加薪的利器。经常混迹于各复杂业务线的人&#xff0c;才能跳出重复工作、不断踩坑的怪圈。而一个成熟的码农在于技术过关后&#xff0c;更突出其他技能对专业技术的附加值。 毋须讳言的是&#xff0c;35岁以后你的一线coding能力一…

使用SPI驱动数码管

代码&#xff1a; 7-seg.c /*《AVR专题精选》随书例程3.通信接口使用技巧项目&#xff1a;改进的延时法实现半双工软件串口文件&#xff1a;7seg.c说明&#xff1a;SPI控制数码管驱动文件作者&#xff1a;邵子扬时间&#xff1a;2012年12月15日*/#include <avr/io.h>ex…

【嵌入式】嵌入式Linux开发实战指南:从交叉编译到触摸屏交互

文章目录 前言&#xff1a;1.简介1.1. 交叉编译工具1.2. 项目开发流程&#xff1a;1.3. ARM开发板的连接方法 2. 开发板连接3. 系统文件 IO4. 设置共享文件夹3.1. 读文件3.2. 写文件3.2. 设置文件偏移量 4. LCD显示屏显示4.1. LCD 显示颜色4.2. 将文件下载到开发板4.2.1. 在CRT…

JDK动态代理

JDK动态代理源码分析 4.1 JDK动态代理的实现 需要动态代理的接口 /**需要动态代理的接口 */ public interface Movie {void player();void speak();需要动态代理的接口的真实实现 /**需要动态代理接口的真实实现 */ public class RealMovie implements Movie {Override publi…

win10 安装openssl并使用openssl创建自签名证书

win10创建自签名证书 下载安装配置openssl 下载地址&#xff1a; https://slproweb.com/download/Win64OpenSSL-3_3_1.exe https://slproweb.com/products/Win32OpenSSL.html 完成后安装&#xff0c;一路next&#xff0c;到达选位置的之后选择安装的位置&#xff0c;我这里选…

一文详解分布式 ID

分布式系统中&#xff0c;我们经常需要对数据、消息等进行唯一标识&#xff0c;这个唯一标识就是分布式 ID&#xff0c;那么我们如何设计它呢&#xff1f;本文将详细讲述分布式 ID 及其生成方案。 一、为什么需要分布式 ID 目前大部分的系统都已是分布式系统&#xff0c;所以在…

如何打造稳定、好用的 Android LayoutInspector?

速度极慢&#xff0c;遇到复杂的布局经常超时 某些情况无法选中指定的 View 本文将围绕 LayoutInspector 的痛点&#xff0c;分析问题并修复&#xff0c;最终将 LayoutInspector 变成一个稳定、好用的插件。 二、加速 Dump View Hierarchy 2.1 问题描述 开发复杂业务的同学…

【STM32-启动文件 startup_stm32f103xe.s】

STM32-启动文件 startup_stm32f103xe.s ■ STM32-启动文件■ STM32-启动文件主要做了以下工作&#xff1a;■ STM32-启动文件指令■ STM32-启动文件代码详解■ 栈空间的开辟■ 栈空间大小 Stack_Size■ .map 文件的详细介绍■ 打开map文件 ■ 堆空间■ PRESERVE8 和 THUMB 指令…

用Java获取键盘输入数的个十百位数

这段Java代码是一个简单的程序&#xff0c;用于接收用户输入的一个三位数&#xff0c;并将其分解为个位、十位和百位数字&#xff0c;然后分别打印出来。下面是代码的详细解释&#xff1a; 导入所需类库: import java.util.Scanner;&#xff1a;导入Scanner类&#xff0c;用于从…