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:7000slots:[0-5460] (5461 slots) master
M: ad413b85bea8dffa4ed78286a483b0f078e76725 192.168.222.133:8000slots:[5461-10922] (5462 slots) master
M: 7d138927259fd5a6847d27c56af05b6f727e379b 192.168.222.133:9000slots:[10923-16383] (5461 slots) master
S: e54654f032713280383077d5d677bf6702affcfc 192.168.222.133:7001replicates ad413b85bea8dffa4ed78286a483b0f078e76725
S: d6225c2e8b2e3b19f608c082b2d24a6c87b1c424 192.168.222.133:8001replicates 7d138927259fd5a6847d27c56af05b6f727e379b
S: 0bbb8ba6dd94e0897b26e581d5a9f1bec4157759 192.168.222.133:9001replicates 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:7000slots:[0-5460] (5461 slots) master1 additional replica(s)
S: e54654f032713280383077d5d677bf6702affcfc 192.168.222.133:7001slots: (0 slots) slavereplicates ad413b85bea8dffa4ed78286a483b0f078e76725
S: d6225c2e8b2e3b19f608c082b2d24a6c87b1c424 192.168.222.133:8001slots: (0 slots) slavereplicates 7d138927259fd5a6847d27c56af05b6f727e379b
S: 0bbb8ba6dd94e0897b26e581d5a9f1bec4157759 192.168.222.133:9001slots: (0 slots) slavereplicates 532617682328eee2853ed10f8e7bf5f5f900ab5f
M: 7d138927259fd5a6847d27c56af05b6f727e379b 192.168.222.133:9000slots:[10923-16383] (5461 slots) master1 additional replica(s)
M: ad413b85bea8dffa4ed78286a483b0f078e76725 192.168.222.133:8000slots:[5461-10922] (5462 slots) master1 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:9000slots:[10923-16383] (5461 slots) master
S: 0bbb8ba6dd94e0897b26e581d5a9f1bec4157759 192.168.222.133:9001slots: (0 slots) slavereplicates 532617682328eee2853ed10f8e7bf5f5f900ab5f
M: ad413b85bea8dffa4ed78286a483b0f078e76725 192.168.222.133:8000slots:[5461-10922] (5462 slots) master1 additional replica(s)
S: e54654f032713280383077d5d677bf6702affcfc 192.168.222.133:7001slots: (0 slots) slavereplicates ad413b85bea8dffa4ed78286a483b0f078e76725
M: 532617682328eee2853ed10f8e7bf5f5f900ab5f 192.168.222.133:7000slots:[0-5460] (5461 slots) master1 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:7000slots:[0-5460] (5461 slots) master1 additional replica(s)
S: e54654f032713280383077d5d677bf6702affcfc 192.168.222.133:7001slots: (0 slots) slavereplicates ad413b85bea8dffa4ed78286a483b0f078e76725
S: 0bbb8ba6dd94e0897b26e581d5a9f1bec4157759 192.168.222.133:9001slots: (0 slots) slavereplicates 532617682328eee2853ed10f8e7bf5f5f900ab5f
M: ad413b85bea8dffa4ed78286a483b0f078e76725 192.168.222.133:8000slots:[5461-16383] (10923 slots) master1 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:9000slots: (0 slots) master
M: ad413b85bea8dffa4ed78286a483b0f078e76725 192.168.222.133:8000slots:[5461-16383] (10923 slots) master1 additional replica(s)
S: e54654f032713280383077d5d677bf6702affcfc 192.168.222.133:7001slots: (0 slots) slavereplicates ad413b85bea8dffa4ed78286a483b0f078e76725
M: 532617682328eee2853ed10f8e7bf5f5f900ab5f 192.168.222.133:7000slots:[0-5460] (5461 slots) master1 additional replica(s)
S: 0bbb8ba6dd94e0897b26e581d5a9f1bec4157759 192.168.222.133:9001slots: (0 slots) slavereplicates 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:9000slots:[5461-11101] (5641 slots) master
M: ad413b85bea8dffa4ed78286a483b0f078e76725 192.168.222.133:8000slots:[11102-16383] (5282 slots) master1 additional replica(s)
S: e54654f032713280383077d5d677bf6702affcfc 192.168.222.133:7001slots: (0 slots) slavereplicates ad413b85bea8dffa4ed78286a483b0f078e76725
M: 532617682328eee2853ed10f8e7bf5f5f900ab5f 192.168.222.133:7000slots:[0-5460] (5461 slots) master1 additional replica(s)
S: 0bbb8ba6dd94e0897b26e581d5a9f1bec4157759 192.168.222.133:9001slots: (0 slots) slavereplicates 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.mzph.cn/pingmian/32451.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

192.回溯算法:电话号码的字母组合(力扣)

代码解决 class Solution { public:// 定义每个数字对应的字母映射const string letterMap[10] {"", // 0"", // 1"abc", // 2"def", // 3"ghi", // 4"jkl", // 5"mno", // 6"pqrs&…

vscode+picgo+gitee实现Markdown图床

vscode中编辑Markdown文件&#xff0c;复制的图片默认是保存在本地的。当文档上传csdn时&#xff0c;会提示图片无法识别 可以在gitee上创建图床仓库&#xff0c;使用picgo工具上传图片&#xff0c;在Markdown中插入gitee链接的方式来解决该问题。 一、 安装picgo工具 1.1 v…

绿联nas折腾过程中遇到的问题

绿联nas折腾过程中遇到的问题 目录 ssh权限问题超级用户 ssh 权限问题 使用chmod -R 777 目录/ 给指定目录及其所有子目录和文件设置最大的权限&#xff0c;权限设置为 rwxrwxrwx&#xff08;读、写、执行权限给所有用户&#xff09;。这个命令会将目录和文件的权限设置为非…

Kimichat使用案例027:有效使用 kimichat 的15个高级技巧

文章目录 一、明确具体:表达清晰、避免使用模糊措辞。二、提供背景信息:提供相关的细节和背景信息。三、每次只问一个问题四、设定明确的标准五、要求解释六、管理期望七、确定问题类型八、调整语言水平九、提供范例十、及时提供反馈十一、明确对话角色十二、 保持对话的连贯…

Mysql之GROUP BY与PARTITION BY区别

GROUP BY GROUP BY 是一个SQL子句&#xff0c;用于将结果集按一个或多个列进行分组&#xff0c;然后对每个组应用聚合函数&#xff08;如 SUM, COUNT, AVG 等&#xff09;。它会改变查询的结果集&#xff0c;使其只包含每个组的汇总信息。 例如&#xff1a; sql SELECT empl…

Java多线程编程与并发控制策略

Java多线程编程与并发控制策略 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;我想和大家分享一下Java多线程编程与并发控制策略的相关知识&am…

Tableau数据可视化与仪表盘搭建

Tableau的主要目的 数据赋能和数据探索。 数据赋能&#xff1a; 1.分析师可以将数据看板发布到线上给其他部门使用 2.自动更新看板 3.自由下载数据 4.线上修改图表 5.邮件发送数据 6.设置数据预警 数据探索&#xff1a; 1.支持亿级数据的连接和处理 2.自由地对字段进行各种…

目前哪个充电宝品牌比较好?四款优质充电宝分享

在电量成为现代生活不可或缺的生产资源的时代&#xff0c;选择一款优质的充电宝无疑是保证移动设备持续运作的关键。面对市场上众多品牌和型号的充电宝&#xff0c;消费者在选择时可能会感到困惑和迷茫。本文将为您揭示哪些品牌真正代表了耐用性和质量的典范&#xff0c;让自己…

gbase8s获取表的serial字段下一个insert序列值

serial字段&#xff0c;有个函数可以获取到最后插入的序列值&#xff0c;但是好像只能获取到当前会话最后一次插入的序列值&#xff0c;不论是SELECT dbinfo(sqlca.sqlerrd1) FROM dual;&#xff0c;还是select dbinfo(bigserial) from dual;&#xff0c;或者select dbinfo(ser…

Perl语言入门:掌握Perl的基本语法

Perl 是一种高级、通用的、解释型、动态编程语言&#xff0c;最初设计用于文本处理&#xff0c;但随着时间的发展&#xff0c;它的应用已经扩展到许多其他领域。Perl 以其强大的文本处理能力、灵活性和丰富的库而受到程序员的喜爱。本文将详细介绍 Perl 的基本语法&#xff0c;…

Overleaf用法

调整题目和正文之间的间距 调整题目和正文之间的间距\hyphenation{op-tical net-works semi-conduc-tor}\title{Report-20/06/2024} \date{\bigskip\today} 在这里添加间距 \begin{document}\maketitle% \author{Name Surname 1, Name Surname 2} \vspace{3cm} 用vspace控制间…

如果申请小程序地理位置接口权限之前刷到这一篇就好了

小程序地理位置接口有什么功能&#xff1f; 通常情况下&#xff0c;我们在开发小程序时&#xff0c;可能会用到获取用户地理位置信息的功能。小程序开发者开放平台的新规定指出&#xff0c;如果没有申请开通微信小程序地理位置接口&#xff08;getLocation&#xff09;&#xf…

4.XSS-反射型(get)利用:获取cookie

GET反射型XSS利用&#xff1a;获取cookie 修改一下配置文件\pikachu\pkxss\xcookie\cookie.php 我这里将对应的IP地址修改为本地pikachu的主站IP地址&#xff0c;这样给用户造成一种正常视觉上的欺骗&#xff0c;容易上当。重定向到pikachu主页面 基于IP搭建的pkxss平台(入侵…

Python中的多线程实现与GIL(全局解释器锁)的影响

Python中的多线程实现与GIL&#xff08;全局解释器锁&#xff09;的影响 在Python编程中&#xff0c;多线程是一种常见的并发编程技术&#xff0c;它允许程序同时执行多个任务。然而&#xff0c;Python的全局解释器锁&#xff08;GIL&#xff09;对多线程的性能和并发性有着显…

合并有序链表

合并有序链表 图解代码如下 图解 虽然很复杂&#xff0c;但能够很好的理解怎么使用链表&#xff0c;以及对链表的指针类理解 代码如下 Node* merge_list_two_pointer(List& list1, List& list2) {Node* new_head1 list1.head;Node* new_head2 list2.head;Node* s…

激光气体热值分析仪在线干法取样预处理装置制备方法

激光气体热值分析仪在线干法取样预处理装置制备方法 一、项目提出前状况: 在冶金企业产生大量的燃气副产品,主要有高炉煤气、转炉煤气、焦炉煤气,这些二次能源的高效利用是企业降本增效的重要途径。燃气热值是燃气最主要的质量指标,热值准确检测对燃气科学配比和有效利用…

认识微服务

单体架构 单体架构&#xff1a;将业务的所有功能集中在一个项目中开发&#xff0c;打成一个包部署。 优点&#xff1a; 架构简单部署成本低缺点&#xff1a; 团队协作成本高系统发布效率低系统可用性差 总结&#xff1a; 单体架构适合开发功能相对简单&#xff0c;规模较小…

【从0实现React18】 (二) JSX 的转换 jsx到底是什么?React是如何把jsx转换为ReactElement?

react项目结构 React(宿主环境的公用方法)React-reconciler(协调器的实现&#xff0c;宿主环境无关)各种宿主环境的包shared(公用辅助方法&#xff0c;宿主环境无关) 当前实现的JSX转换属于 react****包 初始化react包 先创建react package并初始化 更新package.json文件&a…

秋招的复习随想

文章目录 第一版第二版第三版 第一版 研二准备秋招了&#xff0c;真想对研一的我说&#xff01; 课这个东西&#xff0c;还看不出来老师到底是想不想教吗&#xff1f;大部分都是浪费时间&#xff0c;下课让你交论文&#xff0c;实际论文都不会看&#xff0c;都是助教改的。然后…

微服务——重复消费(幂等解决方案)

目录 一、唯一ID机制二、幂等性设计三、状态检查机制四、利用缓存和消息队列五、分布式锁总结 在微服务中&#xff0c;防止重复消费的核心思想是通过设计使得操作一次与多次产生相同的效果&#xff0c;并为每次操作生成唯一的ID。这样&#xff0c;即使在消息被重复发送的情况下…