Redis5 cluster related commands of redis service

Time:2021-1-20

The last blog mainly talked about the following redis.trib.rb This tool is used to manage the nodes in redis3 / 4 cluster. For a review, please refer tohttps://www.cnblogs.com/qiuhom-1874/p/13456915.htmlToday, let’s talk about the description of cluster related configuration commands on redis5;

Creating clusters

[[email protected] redis]# redis-cli -a admin --cluster create 192.168.0.41:6379 192.168.0.42:6379 192.168.0.43:6379 192.168.0.41:6380 192.168.0.42:6380 192.168.0.43:6380 --cluster-replicas 1 
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> 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.0.42:6380 to 192.168.0.41:6379
Adding replica 192.168.0.43:6380 to 192.168.0.42:6379
Adding replica 192.168.0.41:6380 to 192.168.0.43:6379
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
   slots:[0-5460] (5461 slots) master
M: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
   slots:[5461-10922] (5462 slots) master
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
   slots:[10923-16383] (5461 slots) master
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
   replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
   replicates 91e34830f16e45110e37618540628587d5ecc7e2
S: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
   replicates 506776f910a52e45987785199e4fd293956ac1c5
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.0.41:6379)
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
   slots: (0 slots) slave
   replicates 91e34830f16e45110e37618540628587d5ecc7e2
S: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
   slots: (0 slots) slave
   replicates 506776f910a52e45987785199e4fd293956ac1c5
M: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
   slots: (0 slots) slave
   replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[[email protected] redis]# 

Tips: – a means to specify the password to connect to the cluster, – Cluster Create means to create the cluster, followed by the IP address and port (including master and slave) of each node to join the cluster; — cluster replicas It is used to specify the number of replicas (slaves) corresponding to the cluster master. It will create master and slave according to the number specified by us, allocate 16384 slots equally to the corresponding master nodes, and automatically associate the relationship between master and slave;

View cluster information

[[email protected] redis]# cd
[[email protected] ~]# redis-cli --cluster info 192.168.0.41:6379
[ERR] Node 192.168.0.41:6379 NOAUTH Authentication required.
[[email protected] ~]# redis-cli -a admin --cluster info 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.41:6379 (91e34830...) -> 0 keys | 5461 slots | 1 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 5461 slots | 1 slaves.
192.168.0.42:6379 (506776f9...) -> 0 keys | 5462 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
[[email protected] ~]# redis-cli -a admin --cluster check 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.41:6379 (91e34830...) -> 0 keys | 5461 slots | 1 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 5461 slots | 1 slaves.
192.168.0.42:6379 (506776f9...) -> 0 keys | 5462 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.0.41:6379)
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
   slots: (0 slots) slave
   replicates 91e34830f16e45110e37618540628587d5ecc7e2
S: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
   slots: (0 slots) slave
   replicates 506776f910a52e45987785199e4fd293956ac1c5
M: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
   slots: (0 slots) slave
   replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[[email protected] ~]#

View the corresponding relationship of cluster nodes

[[email protected] ~]# redis-cli -a admin -c cluster nodes
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:[email protected] master - 0 1592495162494 3 connected 10923-16383
eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:[email protected] slave 91e34830f16e45110e37618540628587d5ecc7e2 0 1592495164579 5 connected
91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:[email protected] myself,master - 0 1592495158000 1 connected 0-5460
6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:[email protected] slave 506776f910a52e45987785199e4fd293956ac1c5 0 1592495159344 6 connected
506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:[email protected] master - 0 1592495163529 2 connected 5461-10922
646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:[email protected] slave 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 0 1592495161445 4 connected
[[email protected] ~]#

View cluster status

[[email protected] ~]# redis-cli -a admin -c cluster info
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:159
cluster_stats_messages_pong_sent:158
cluster_stats_messages_sent:317
cluster_stats_messages_ping_received:153
cluster_stats_messages_pong_received:159
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:317
[[email protected] ~]# 

Tip: in fact, the above command is to use non interactive command to interact with redis, which is a bit similar to the – e option in MySQL. After connecting to the corresponding redisserver and executing the command, it returns. In mysql, use – e to specify the command to be executed, and in redis, use – C to specify the command to be executed;

Add a new node to the existing cluster

Experimental environment description

Environment directory structure

[[email protected] redis]# tree 
.
├── 6379
│   └── etc
│       └── redis.conf
├── 6380
│   └── etc
│       └── redis.conf
├── 6381
│   └── etc
│       └── redis.conf
├── 6382
│   └── etc
│       └── redis.conf
├── bin
│   ├── redis-benchmark
│   ├── redis-check-aof
│   ├── redis-check-rdb
│   ├── redis-cli
│   ├── redis-sentinel -> redis-server
│   └── redis-server
├── dump_6379.rdb
├── dump_6380.rdb
├── logs
│   ├── redis_6379.log
│   └── redis_6380.log
├── redis-cluster-6379.conf
├── redis-cluster-6380.conf
└── run

11 directories, 16 files
[[email protected] redis]# 

Confirm profile information

Tip: note that the address of the bind must be able to communicate with other nodes in the cluster, the port cannot conflict with other ports of the local machine, and the password must be the same as other passwords of nodes in the cluster;

Start 192.168.0.43:6081/6082

Add 192.168.0.43:6381/6382 to the existing cluster

[[email protected] ~]# redis-cli -a admin --cluster add-node 192.168.0.43:6381 192.168.0.41:6379 
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Adding node 192.168.0.43:6381 to cluster 192.168.0.41:6379
>>> Performing Cluster Check (using node 192.168.0.41:6379)
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
   slots: (0 slots) slave
   replicates 91e34830f16e45110e37618540628587d5ecc7e2
S: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
   slots: (0 slots) slave
   replicates 506776f910a52e45987785199e4fd293956ac1c5
M: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
   slots: (0 slots) slave
   replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[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.0.43:6381 to make it join the cluster.
[OK] New node added correctly.
[[email protected] ~]# redis-cli -a admin --cluster add-node 192.168.0.43:6382 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Adding node 192.168.0.43:6382 to cluster 192.168.0.41:6379
>>> Performing Cluster Check (using node 192.168.0.41:6379)
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
   slots: (0 slots) slave
   replicates 91e34830f16e45110e37618540628587d5ecc7e2
S: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
   slots: (0 slots) slave
   replicates 506776f910a52e45987785199e4fd293956ac1c5
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
   slots: (0 slots) master
M: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
   slots: (0 slots) slave
   replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[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.0.43:6382 to make it join the cluster.
[OK] New node added correctly.
[[email protected] ~]# 

View existing cluster information

[[email protected] ~]# redis-cli -a admin --cluster check 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.41:6379 (91e34830...) -> 0 keys | 5461 slots | 1 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 5461 slots | 1 slaves.
192.168.0.43:6382 (43d6e13d...) -> 0 keys | 0 slots | 0 slaves.
192.168.0.43:6381 (95fa2115...) -> 0 keys | 0 slots | 0 slaves.
192.168.0.42:6379 (506776f9...) -> 0 keys | 5462 slots | 1 slaves.
[OK] 0 keys in 5 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.0.41:6379)
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
   slots: (0 slots) slave
   replicates 91e34830f16e45110e37618540628587d5ecc7e2
S: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
   slots: (0 slots) slave
   replicates 506776f910a52e45987785199e4fd293956ac1c5
M: 43d6e13d06019af045e378ddc3e82b15b41ebdcd 192.168.0.43:6382
   slots: (0 slots) master
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
   slots: (0 slots) master
M: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
   slots: (0 slots) slave
   replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[[email protected] ~]# redis-cli -a admin -c cluster nodes
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:[email protected] master - 0 1592498237487 3 connected 10923-16383
eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:[email protected] slave 91e34830f16e45110e37618540628587d5ecc7e2 0 1592498238525 5 connected
91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:[email protected] myself,master - 0 1592498215000 1 connected 0-5460
6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:[email protected] slave 506776f910a52e45987785199e4fd293956ac1c5 0 1592498234346 6 connected
43d6e13d06019af045e378ddc3e82b15b41ebdcd 192.168.0.43:[email protected] master - 0 1592498236438 7 connected
95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:[email protected] master - 0 1592498235388 0 connected
506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:[email protected] master - 0 1592498239566 2 connected 5461-10922
646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:[email protected] slave 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 0 1592498233609 4 connected
[[email protected] ~]# 

Tip: you can see that two new nodes are added to the corresponding cluster, both of which are master roles, and the two new nodes have no slave and slot;

Allocate slots to 192.168.0.43:6381

[[email protected] ~]# redis-cli -a admin --cluster check 192.168.0.41:6379  
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.41:6379 (91e34830...) -> 0 keys | 5461 slots | 1 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 5461 slots | 1 slaves.
192.168.0.43:6382 (43d6e13d...) -> 0 keys | 0 slots | 0 slaves.
192.168.0.43:6381 (95fa2115...) -> 0 keys | 0 slots | 0 slaves.
192.168.0.42:6379 (506776f9...) -> 0 keys | 5462 slots | 1 slaves.
[OK] 0 keys in 5 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.0.41:6379)
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
   slots: (0 slots) slave
   replicates 91e34830f16e45110e37618540628587d5ecc7e2
S: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
   slots: (0 slots) slave
   replicates 506776f910a52e45987785199e4fd293956ac1c5
M: 43d6e13d06019af045e378ddc3e82b15b41ebdcd 192.168.0.43:6382
   slots: (0 slots) master
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
   slots: (0 slots) master
M: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
   slots: (0 slots) slave
   replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[[email protected] ~]# redis-cli -a admin --cluster reshard 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing Cluster Check (using node 192.168.0.41:6379)
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
   slots: (0 slots) slave
   replicates 91e34830f16e45110e37618540628587d5ecc7e2
S: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
   slots: (0 slots) slave
   replicates 506776f910a52e45987785199e4fd293956ac1c5
M: 43d6e13d06019af045e378ddc3e82b15b41ebdcd 192.168.0.43:6382
   slots: (0 slots) master
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
   slots: (0 slots) master
M: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
   slots: (0 slots) slave
   replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[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)? 4096
What is the receiving node ID? 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
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: all

Ready to move 4096 slots.
  Source nodes:
    M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
       slots:[0-5460] (5461 slots) master
       1 additional replica(s)
    M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
       slots:[10923-16383] (5461 slots) master
       1 additional replica(s)
    M: 43d6e13d06019af045e378ddc3e82b15b41ebdcd 192.168.0.43:6382
       slots: (0 slots) master
    M: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
       slots:[5461-10922] (5462 slots) master
       1 additional replica(s)
  Destination node:
    M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
       slots: (0 slots) master
  Resharding plan:
    Moving slot 5461 from 506776f910a52e45987785199e4fd293956ac1c5
    Moving slot 5462 from 506776f910a52e45987785199e4fd293956ac1c5
    Moving slot 5463 from 506776f910a52e45987785199e4fd293956ac1c5
    Moving slot 5464 from 506776f910a52e45987785199e4fd293956ac1c5
    Moving slot 5465 from 506776f910a52e45987785199e4fd293956ac1c5
    Moving slot 5466 from 506776f910a52e45987785199e4fd293956ac1c5
    Moving slot 5467 from 506776f910a52e45987785199e4fd293956ac1c5
    Moving slot 5468 from 506776f910a52e45987785199e4fd293956ac1c5
    Moving slot 5469 from 506776f910a52e45987785199e4fd293956ac1c5
…… Omit part of
    Moving slot 12284 from 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
    Moving slot 12285 from 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
    Moving slot 12286 from 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
    Moving slot 12287 from 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
Do you want to proceed with the proposed reshard plan (yes/no)? yes
Moving slot 5461 from 192.168.0.42:6379 to 192.168.0.43:6381: 
Moving slot 5462 from 192.168.0.42:6379 to 192.168.0.43:6381: 
Moving slot 5463 from 192.168.0.42:6379 to 192.168.0.43:6381: 
Moving slot 5464 from 192.168.0.42:6379 to 192.168.0.43:6381: 
…… Omit part of
Moving slot 12285 from 192.168.0.43:6379 to 192.168.0.43:6381: 
Moving slot 12286 from 192.168.0.43:6379 to 192.168.0.43:6381: 
Moving slot 12287 from 192.168.0.43:6379 to 192.168.0.43:6381: 
[[email protected] ~]#

Tip: this and redis- trib.rb There is no difference in command usage;

View the newly assigned slot information

[[email protected] ~]# redis-cli -a admin --cluster check 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.41:6379 (91e34830...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6382 (43d6e13d...) -> 0 keys | 0 slots | 0 slaves.
192.168.0.43:6381 (95fa2115...) -> 0 keys | 4096 slots | 0 slaves.
192.168.0.42:6379 (506776f9...) -> 0 keys | 4096 slots | 1 slaves.
[OK] 0 keys in 5 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.0.41:6379)
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
   slots:[1365-5460] (4096 slots) master
   1 additional replica(s)
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
   slots: (0 slots) slave
   replicates 91e34830f16e45110e37618540628587d5ecc7e2
S: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
   slots: (0 slots) slave
   replicates 506776f910a52e45987785199e4fd293956ac1c5
M: 43d6e13d06019af045e378ddc3e82b15b41ebdcd 192.168.0.43:6382
   slots: (0 slots) master
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
   slots:[0-1364],[5461-6826],[10923-12287] (4096 slots) master
M: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
   slots: (0 slots) slave
   replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[[email protected] ~]# 

Tip: you can see that four nodes in the cluster have 4096 slots allocated, and one node has no slots;

Change the node (192.168.0.43:6382) to the slave of the new node (192.168.0.43:6381)

[[email protected] ~]# redis-cli -a admin --cluster check 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.41:6379 (91e34830...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6382 (43d6e13d...) -> 0 keys | 0 slots | 0 slaves.
192.168.0.43:6381 (95fa2115...) -> 0 keys | 4096 slots | 0 slaves.
192.168.0.42:6379 (506776f9...) -> 0 keys | 4096 slots | 1 slaves.
[OK] 0 keys in 5 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.0.41:6379)
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
   slots:[1365-5460] (4096 slots) master
   1 additional replica(s)
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
   slots: (0 slots) slave
   replicates 91e34830f16e45110e37618540628587d5ecc7e2
S: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
   slots: (0 slots) slave
   replicates 506776f910a52e45987785199e4fd293956ac1c5
M: 43d6e13d06019af045e378ddc3e82b15b41ebdcd 192.168.0.43:6382
   slots: (0 slots) master
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
   slots:[0-1364],[5461-6826],[10923-12287] (4096 slots) master
M: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
   slots: (0 slots) slave
   replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[[email protected] ~]# redis-cli -h 192.168.0.43 -p 6382 -a admin -c cluster replicate 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
OK
[[email protected] ~]# redis-cli -a admin --cluster check 192.168.0.41:6379                                      
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.41:6379 (91e34830...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6381 (95fa2115...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.42:6379 (506776f9...) -> 0 keys | 4096 slots | 1 slaves.
[OK] 0 keys in 4 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.0.41:6379)
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
   slots:[1365-5460] (4096 slots) master
   1 additional replica(s)
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
   slots: (0 slots) slave
   replicates 91e34830f16e45110e37618540628587d5ecc7e2
S: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
   slots: (0 slots) slave
   replicates 506776f910a52e45987785199e4fd293956ac1c5
S: 43d6e13d06019af045e378ddc3e82b15b41ebdcd 192.168.0.43:6382
   slots: (0 slots) slave
   replicates 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
   slots:[0-1364],[5461-6826],[10923-12287] (4096 slots) master
   1 additional replica(s)
M: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
   slots: (0 slots) slave
   replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[[email protected] ~]# 

Tip: I use – C to connect redis on the shell to execute the command, which has the same effect as the interactive execution command. From the above information, we can see that 192.168.0.43:6381 already has a slave, and the corresponding 192.168.0.43:6382 does not appear in the master list;

Verification: read and write data to the cluster

[[email protected] ~]# redis-cli -a admin
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> KEYS *
(empty list or set)
127.0.0.1:6379> set aa bb
(error) MOVED 1180 192.168.0.43:6381
127.0.0.1:6379> set cc dd 
(error) MOVED 700 192.168.0.43:6381
127.0.0.1:6379> set k v
(error) MOVED 7629 192.168.0.42:6379
127.0.0.1:6379> set kk vv
OK
127.0.0.1:6379> get kk 
"vv"
127.0.0.1:6379> 

Tip: from the above results, read and write can be performed normally, and the corresponding key can be calculated normally, and tell us which node to perform the corresponding key read and write operation;

Verification: stop any master in the cluster and see if the corresponding slave is promoted to master?

[[email protected] redis]# redis-cli -a admin --cluster info 192.168.0.42
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
[ERR] Invalid arguments: you need to pass either a valid address (ie. 120.0.0.1:7000) or space separated IP and port (ie. 120.0.0.1 7000)
[[email protected] redis]# 
[[email protected] redis]# redis-cli -a admin --cluster info 192.168.0.42:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.42:6379 (506776f9...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.41:6379 (91e34830...) -> 1 keys | 4096 slots | 1 slaves.
192.168.0.43:6381 (95fa2115...) -> 0 keys | 4096 slots | 1 slaves.
[OK] 1 keys in 4 masters.
0.00 keys per slot on average.
[[email protected] redis]# ps -ef |grep redis
root      20256      1  0 11:40 ?        00:00:15 redis-server 0.0.0.0:6379 [cluster]
root      20258      1  0 11:40 ?        00:00:13 redis-server 0.0.0.0:6380 [cluster]
root      20318   1926  0 13:04 pts/1    00:00:00 grep --color=auto redis
[[email protected] redis]# kill -9 20256
[[email protected] redis]# redis-cli -a admin --cluster info 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
Could not connect to Redis at 192.168.0.42:6379: Connection refused
*** WARNING: 192.168.0.43:6380 claims to be slave of unknown node ID 506776f910a52e45987785199e4fd293956ac1c5.
192.168.0.41:6379 (91e34830...) -> 1 keys | 4096 slots | 1 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6381 (95fa2115...) -> 0 keys | 4096 slots | 1 slaves.
[OK] 1 keys in 3 masters.
0.00 keys per slot on average.
[[email protected] redis]# redis-cli -a admin --cluster info 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
Could not connect to Redis at 192.168.0.42:6379: Connection refused
192.168.0.41:6379 (91e34830...) -> 1 keys | 4096 slots | 1 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6380 (6274aa87...) -> 0 keys | 4096 slots | 0 slaves.
192.168.0.43:6381 (95fa2115...) -> 0 keys | 4096 slots | 1 slaves.
[OK] 1 keys in 4 masters.
0.00 keys per slot on average.
[[email protected] redis]# 

Tip: you can see that the corresponding slave can be promoted to master;

Verification: start the node corresponding to the downtime to see if it is automatically degraded to slave?

[[email protected] redis]# redis-cli -a admin --cluster info 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
Could not connect to Redis at 192.168.0.42:6379: Connection refused
192.168.0.41:6379 (91e34830...) -> 1 keys | 4096 slots | 1 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6380 (6274aa87...) -> 0 keys | 4096 slots | 0 slaves.
192.168.0.43:6381 (95fa2115...) -> 0 keys | 4096 slots | 1 slaves.
[OK] 1 keys in 4 masters.
0.00 keys per slot on average.
[[email protected] redis]# redis-server /usr/local/redis/6379/etc/redis.conf 
[[email protected] redis]# redis-cli -a admin --cluster info 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.41:6379 (91e34830...) -> 1 keys | 4096 slots | 1 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6380 (6274aa87...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6381 (95fa2115...) -> 0 keys | 4096 slots | 1 slaves.
[OK] 1 keys in 4 masters.
0.00 keys per slot on average.
[[email protected] redis]# redis-cli -a admin -h 192.168.0.42 -p 6379 -c info replication
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:slave
master_host:192.168.0.43
master_port:6380
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_repl_offset:6594
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:7b45a2b847aba7e40e3a6b7f39d4511fa2a62b6a
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:6594
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:6497
repl_backlog_histlen:98
[[email protected] redis]# 

Prompt: when 192.168.0.42:6379 is started, it will be automatically degraded to slave and subordinate to 192.168.0.43:6380;

Dynamically deleting nodes in a cluster

Move the slot on 192.168.0.41:6379 to 192.168.0.43:6381

[[email protected] ~]# redis-cli -a admin --cluster reshard 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing Cluster Check (using node 192.168.0.41:6379)
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
   slots:[1365-5460] (4096 slots) master
   1 additional replica(s)
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
   slots: (0 slots) slave
   replicates 91e34830f16e45110e37618540628587d5ecc7e2
M: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
S: 43d6e13d06019af045e378ddc3e82b15b41ebdcd 192.168.0.43:6382
   slots: (0 slots) slave
   replicates 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
   slots:[0-1364],[5461-6826],[10923-12287] (4096 slots) master
   1 additional replica(s)
S: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
   slots: (0 slots) slave
   replicates 6274aa87409a801311e580cb19d185c1d53bfa1f
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
   slots: (0 slots) slave
   replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[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)? 4096
What is the receiving node ID? 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
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: 91e34830f16e45110e37618540628587d5ecc7e2
Source node #2: done
    Moving slot 5457 from 91e34830f16e45110e37618540628587d5ecc7e2
    Moving slot 5458 from 91e34830f16e45110e37618540628587d5ecc7e2
    Moving slot 5459 from 91e34830f16e45110e37618540628587d5ecc7e2
    Moving slot 5460 from 91e34830f16e45110e37618540628587d5ecc7e2
Do you want to proceed with the proposed reshard plan (yes/no)? yes
Moving slot 1365 from 192.168.0.41:6379 to 192.168.0.43:6381: 
Moving slot 1366 from 192.168.0.41:6379 to 192.168.0.43:6381: 
Moving slot 1367 from 192.168.0.41:6379 to 192.168.0.43:6381: 
…… Omit part of
Moving slot 5457 from 192.168.0.41:6379 to 192.168.0.43:6381: 
Moving slot 5458 from 192.168.0.41:6379 to 192.168.0.43:6381: 
Moving slot 5459 from 192.168.0.41:6379 to 192.168.0.43:6381: 
Moving slot 5460 from 192.168.0.41:6379 to 192.168.0.43:6381: 
[[email protected] ~]#

Tip: in redis5, even if there is data on the corresponding node, it can be migrated directly, and the corresponding data can be migrated to the specified node;

View cluster information after migration

[[email protected] ~]# redis-cli -a admin --cluster check 192.168.0.41:6379  
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.41:6379 (91e34830...) -> 0 keys | 0 slots | 0 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6380 (6274aa87...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6381 (95fa2115...) -> 1 keys | 8192 slots | 2 slaves.
[OK] 1 keys in 4 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.0.41:6379)
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
   slots: (0 slots) master
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
   slots: (0 slots) slave
   replicates 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
M: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
S: 43d6e13d06019af045e378ddc3e82b15b41ebdcd 192.168.0.43:6382
   slots: (0 slots) slave
   replicates 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
   slots:[0-6826],[10923-12287] (8192 slots) master
   2 additional replica(s)
S: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
   slots: (0 slots) slave
   replicates 6274aa87409a801311e580cb19d185c1d53bfa1f
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
   slots: (0 slots) slave
   replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[[email protected] ~]# 

Tip: you can see that the keys and slots on the corresponding nodes migrate with the slot clearing migration;

Verification: log in to the corresponding node to check whether the key on 192.168.0.41:6379 has been migrated to 192.168.0.43:6381?

[[email protected] ~]# redis-cli -h 192.168.0.43 -p 6381
192.168.0.43:6381> AUTH admin
OK
192.168.0.43:6381> KEYS *
1) "kk"
192.168.0.43:6381> get kk 
"vv"
192.168.0.43:6381> 

Tip: you can see that the key we wrote in 192.168.0.41:6379 has been migrated to 192.168.0.43:6381;

Remove 192.168.0.41:6379 from the cluster

[[email protected] ~]# redis-cli -a admin --cluster check 192.168.0.42:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.41:6379 (91e34830...) -> 0 keys | 0 slots | 0 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6380 (6274aa87...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6381 (95fa2115...) -> 1 keys | 8192 slots | 2 slaves.
[OK] 1 keys in 4 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.0.42:6379)
S: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
   slots: (0 slots) slave
   replicates 6274aa87409a801311e580cb19d185c1d53bfa1f
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
   slots: (0 slots) slave
   replicates 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
   slots: (0 slots) master
S: 43d6e13d06019af045e378ddc3e82b15b41ebdcd 192.168.0.43:6382
   slots: (0 slots) slave
   replicates 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
M: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
   slots: (0 slots) slave
   replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
   slots:[0-6826],[10923-12287] (8192 slots) master
   2 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[[email protected] ~]# redis-cli -a admin --cluster del-node 192.168.0.42:6379 91e34830f16e45110e37618540628587d5ecc7e2
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Removing node 91e34830f16e45110e37618540628587d5ecc7e2 from cluster 192.168.0.42:6379
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
[root[email protected] ~]# redis-cli -a admin --cluster info 192.168.0.42:6379                                      
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6380 (6274aa87...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6381 (95fa2115...) -> 1 keys | 8192 slots | 2 slaves.
[OK] 1 keys in 3 masters.
0.00 keys per slot on average.
[[email protected] ~]# 

Tip: from the above information, you can see that the corresponding node has been deleted from the cluster; the slave of the corresponding node has been migrated to the new master;

Delete slave

[[email protected] ~]# redis-cli -a admin --cluster check 192.168.0.42:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6380 (6274aa87...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6381 (95fa2115...) -> 1 keys | 8192 slots | 2 slaves.
[OK] 1 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.0.42:6379)
S: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
   slots: (0 slots) slave
   replicates 6274aa87409a801311e580cb19d185c1d53bfa1f
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
   slots: (0 slots) slave
   replicates 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
S: 43d6e13d06019af045e378ddc3e82b15b41ebdcd 192.168.0.43:6382
   slots: (0 slots) slave
   replicates 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
M: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
   slots: (0 slots) slave
   replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
   slots:[0-6826],[10923-12287] (8192 slots) master
   2 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[[email protected] ~]# redis-cli -a admin --cluster del-node 192.168.0.42:6379 43d6e13d06019af045e378ddc3e82b15b41ebdcd
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Removing node 43d6e13d06019af045e378ddc3e82b15b41ebdcd from cluster 192.168.0.42:6379
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
[[email protected] ~]# redis-cli -a admin --cluster info  192.168.0.42:6379                                      
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6380 (6274aa87...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6381 (95fa2115...) -> 1 keys | 8192 slots | 1 slaves.
[OK] 1 keys in 3 masters.
0.00 keys per slot on average.
[[email protected] ~]# 

Tip: the corresponding slot can be deleted directly, because the slot usually has no slot;

Verification: start 192.168.0.41:6379 to see if it will return to the cluster?

[[email protected] ~]# ss -tnl
State      Recv-Q Send-Q        Local Address:Port                       Peer Address:Port              
LISTEN     0      128                       *:6380                                  *:*                  
LISTEN     0      128                       *:22                                    *:*                  
LISTEN     0      100               127.0.0.1:25                                    *:*                  
LISTEN     0      128                       *:16380                                 *:*                  
LISTEN     0      128                      :::22                                   :::*                  
LISTEN     0      100                     ::1:25                                   :::*                  
[[email protected] ~]# redis-server /usr/local/redis/6379/etc/redis.conf 
[[email protected] ~]# ss -tnl
State      Recv-Q Send-Q        Local Address:Port                       Peer Address:Port              
LISTEN     0      128                       *:6379                                  *:*                  
LISTEN     0      128                       *:6380                                  *:*                  
LISTEN     0      128                       *:22                                    *:*                  
LISTEN     0      100               127.0.0.1:25                                    *:*                  
LISTEN     0      128                       *:16379                                 *:*                  
LISTEN     0      128                       *:16380                                 *:*                  
LISTEN     0      128                      :::22                                   :::*                  
LISTEN     0      100                     ::1:25                                   :::*                  
[[email protected] ~]# redis-cli -a admin --cluster info  192.168.0.42:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6380 (6274aa87...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6381 (95fa2115...) -> 1 keys | 8192 slots | 1 slaves.
[OK] 1 keys in 3 masters.
0.00 keys per slot on average.
[[email protected] ~]# redis-cli -a admin --cluster check  192.168.0.42:6379    
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6380 (6274aa87...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6381 (95fa2115...) -> 1 keys | 8192 slots | 1 slaves.
[OK] 1 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.0.42:6379)
S: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
   slots: (0 slots) slave
   replicates 6274aa87409a801311e580cb19d185c1d53bfa1f
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
   slots: (0 slots) slave
   replicates 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
M: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
   slots: (0 slots) slave
   replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
   slots:[0-6826],[10923-12287] (8192 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.
[[email protected] ~]# 

Tip: you can see that this is different from redis3 / 4. If you start the server after downtime, it will not return to the cluster;

Verification: start the deleted slave node to see if it returns to the cluster?

[[email protected] redis]# ss -tnl
State      Recv-Q Send-Q        Local Address:Port                       Peer Address:Port              
LISTEN     0      128                       *:6379                                  *:*                  
LISTEN     0      128                       *:6380                                  *:*                  
LISTEN     0      128                       *:6381                                  *:*                  
LISTEN     0      128                       *:22                                    *:*                  
LISTEN     0      100               127.0.0.1:25                                    *:*                  
LISTEN     0      128                       *:16379                                 *:*                  
LISTEN     0      128                       *:16380                                 *:*                  
LISTEN     0      128                       *:16381                                 *:*                  
LISTEN     0      128                      :::22                                   :::*                  
LISTEN     0      100                     ::1:25                                   :::*                  
[[email protected] redis]# redis-server /usr/local/redis/6382/etc/redis.conf 
[[email protected] redis]# ss -tnl
State      Recv-Q Send-Q        Local Address:Port                       Peer Address:Port              
LISTEN     0      128                       *:6379                                  *:*                  
LISTEN     0      128                       *:6380                                  *:*                  
LISTEN     0      128                       *:6381                                  *:*                  
LISTEN     0      128                       *:6382                                  *:*                  
LISTEN     0      128                       *:22                                    *:*                  
LISTEN     0      100               127.0.0.1:25                                    *:*                  
LISTEN     0      128                       *:16379                                 *:*                  
LISTEN     0      128                       *:16380                                 *:*                  
LISTEN     0      128                       *:16381                                 *:*                  
LISTEN     0      128                       *:16382                                 *:*                  
LISTEN     0      128                      :::22                                   :::*                  
LISTEN     0      100                     ::1:25                                   :::*                  
[[email protected] redis]# redis-cli -a admin --cluster check 192.168.0.42:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6380 (6274aa87...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6381 (95fa2115...) -> 1 keys | 8192 slots | 1 slaves.
[OK] 1 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.0.42:6379)
S: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
   slots: (0 slots) slave
   replicates 6274aa87409a801311e580cb19d185c1d53bfa1f
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
   slots: (0 slots) slave
   replicates 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
M: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
   slots: (0 slots) slave
   replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
   slots:[0-6826],[10923-12287] (8192 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.
[[email protected] redis]# 

Tip: you can see that after starting the deleted slave, it will not return to the cluster;

Import data from external redis server to cluster

Create some keys on 192.168.0.41:6379 to simulate the external redisserver

[[email protected] ~]# redis-cli -a admin -h 192.168.0.41 -p 6379           
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.41:6379> KEYS *
(empty list or set)
192.168.0.41:6379> set aa bb
(error) MOVED 1180 192.168.0.43:6381
192.168.0.41:6379> 

Tip: we can’t insert data into 192.168.0.41:6379. Let’s turn off the cluster function?

Turn off the cluster function of 192.168.0.41:6379 and start redis again

[[email protected] ~]# grep ^#cluster /usr/local/redis/6379/etc/redis.conf
#cluster-enabled yes
#cluster-config-file redis-cluster-6379.conf
[[email protected] ~]# ps -ef |grep redis
root      19893      1  0 11:40 ?        00:00:21 redis-server 0.0.0.0:6380 [cluster]
root      20002      1  0 13:35 ?        00:00:02 redis-server 0.0.0.0:6379 [cluster]
root      20028   1491  0 13:49 pts/1    00:00:00 grep --color=auto redis
[[email protected] ~]# kill -9 20002
[[email protected] ~]# redis-server /usr/local/redis/6379/etc/redis.conf
[[email protected] ~]# ps -ef|grep redis
root      19893      1  0 11:40 ?        00:00:21 redis-server 0.0.0.0:6380 [cluster]
root      20030      1  0 13:49 ?        00:00:00 redis-server 0.0.0.0:6379
root      20035   1491  0 13:49 pts/1    00:00:00 grep --color=auto redis
[[email protected] ~]# 

Tip: you can see that the corresponding redis process does not run in cluster mode. Next, let’s try inserting data

[[email protected] ~]# redis-cli -a admin -h 192.168.0.41 -p 6379                    
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.41:6379> KEYS *
(empty list or set)
192.168.0.41:6379> MSET k1 v1 k2 v2 k3 v3 k4 v4
OK
192.168.0.41:6379> KEYS *
1) "k3"
2) "k2"
3) "k4"
4) "k1"
192.168.0.41:6379>

Tip: you can see that there is no problem inserting data now;

Import the data on 192.168.0.41:6379 into the cluster

Tip: when importing data, we are prompted that there is no authentication. Here, we need to pay attention to the fact that before importing data, we need to turn off the passwords of all redis servers, including the nodes in the cluster and the source redis server, so as to avoid the environment inconsistency caused by authentication, which makes it impossible to import. We can add the parameter — cluster replace to forcibly replace the existing keys of redis cluster.

Shut down the authentication password and external redisserver of each node in the cluster

Import the data on 192.168.0.41:6379 to the cluster again

[[email protected] ~]# redis-cli --cluster import 192.168.0.43:6379 --cluster-from 192.168.0.41:6379 --cluster-copy          
>>> Importing data from 192.168.0.41:6379 to cluster 192.168.0.43:6379
>>> Performing Cluster Check (using node 192.168.0.43:6379)
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
   slots:[0-6826],[10923-12287] (8192 slots) master
   1 additional replica(s)
M: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
   slots: (0 slots) slave
   replicates 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
S: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
   slots: (0 slots) slave
   replicates 6274aa87409a801311e580cb19d185c1d53bfa1f
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
   slots: (0 slots) slave
   replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
*** Importing 4 keys from DB 0
Migrating k3 to 192.168.0.43:6381: OK
Migrating k2 to 192.168.0.43:6381: OK
Migrating k4 to 192.168.0.43:6380: OK
Migrating k1 to 192.168.0.43:6379: OK
[[email protected] ~]# 

Prompt: you can see that the data is imported successfully;

Verification: view the imported data in each node of the cluster

[[email protected] ~]# redis-cli -h 192.168.0.43 -p 6381
192.168.0.43:6381> KEYS *
1) "k2"
2) "k3"
3) "kk"
192.168.0.43:6381> get k2
"v2"
192.168.0.43:6381> get k3
"v3"
192.168.0.43:6381> quit
[[email protected] ~]# redis-cli -h 192.168.0.43 -p 6380
192.168.0.43:6380> KEYS *
1) "k4"
192.168.0.43:6380> get k4
"v4"
192.168.0.43:6380> quit
[[email protected] ~]# redis-cli -h 192.168.0.43 -p 6379
192.168.0.43:6379> KEYS *
1) "k1"
192.168.0.43:6379> get k1
"v1"
192.168.0.43:6379> quit
[[email protected] ~]# 

Tip: you can see that the data on the external redisserver is poured into each node in the cluster for storage; it is used on redis3 / 4 redis.trib.rb The tool always prompts errors when importing data, and I don’t know why. So it’s better to use redis5 or above as a cluster in production;

Recommended Today

DK7 switch’s support for string

Before JDK7, switch can only support byte, short, char, int or their corresponding encapsulation classes and enum types. After JDK7, switch supports string type. In the switch statement, the value of the expression cannot be null, otherwise NullPointerException will be thrown at runtime. Null cannot be used in the case clause, otherwise compilation errors will […]