可参考:https://blog.csdn.net/mysqldba23/article/details/67640478
https://blog.51cto.com/caiyuanji
crc 16384
redis-cli -p port -c command -h host
redis-cli -h 192.168.170.132 -c ping
redis-cli -h 192.168.170.132 -c cluster nodes
redis-cli -h 192.168.170.132 -p port -c cluster failover 故障转移,在slave节点执行
登录:$ redis-cli -h host -p port -a password
127.0.0.1:6379> ping
PONG #用于检测redis服务是否开启
CONFIG GET * 获取所有东西
客户端连接操作
[root@gougou ~]# redis-cli -h maomao -p 6379
maomao:6379> CLUSTER INFO 查看集群信息
cluster_state:ok
cluster_slots_assigned:16384 slot已分配数量
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:3
cluster_my_epoch:2
cluster_stats_messages_ping_sent:63701
cluster_stats_messages_pong_sent:66118
cluster_stats_messages_meet_sent:9
cluster_stats_messages_sent:129828
cluster_stats_messages_ping_received:66115
cluster_stats_messages_pong_received:63568
cluster_stats_messages_meet_received:3
cluster_stats_messages_received:129686
maomao:6379>CLUSTER NODES 查看集群内的节点
0ad6b93eb27efcef3c27ef145f48d29c226071c6 192.168.170.131:6379@16379 master - 0 1550198514363 1 connected 0-5460
031a1a6f888f83ad5aec91f4a0a4107febe1313b 192.168.170.130:6389@16389 slave 0ad6b93eb27efcef3c27ef145f48d29c226071c6 0 1550198513000 1 connected
b889283cb38802ada1a622648ae5302c744a48ce 192.168.170.130:6379@16379 myself,master - 0 1550198512000 2 connected 5461-10922
2904898981dc2642f727960ed3a564ca5bba8f9b 192.168.170.132:6379@16379 master - 0 1550198513000 3 connected 10923-16383
fb26a19e0916ce3d36e3943fefb5bb6d788f6330 192.168.170.132:6389@16389 slave b889283cb38802ada1a622648ae5302c744a48ce 0 1550198513354 2 connected
0581e47486b02408c69d7e22e22648b0bc86336d 192.168.170.131:6389@16389 slave 2904898981dc2642f727960ed3a564ca5bba8f9b 0 1550198511339 3 connected

[root@gougou ~]# redis-cli --cluster info 192.168.170.130:6379
192.168.170.130:6379 (b889283c...) -> 1 keys | 5462 slots | 1 slaves.
192.168.170.132:6379 (29048989...) -> 0 keys | 5461 slots | 1 slaves.
192.168.170.131:6379 (0ad6b93e...) -> 0 keys | 5461 slots | 1 slaves.
4.0用法
redis-trib.rb reshard 192.168.170.132:6379 手工平衡slots (迁移)
5.0用法
redis-cli --cluster reshard 192.168.170.132:6379
......
[OK] All 16384 slots covered.
How many slots do you want to move (from 1 to 16384)? 3000 要移除的slot数量
What is the receiving node ID? 0d49e2f3440ecb0bcc079e3a632b148df049b32b master的id号
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 “all”将所有节点用作哈希槽的源节点

节点下线,4.0用法
1) 需要先将“要下线的master” 中的slot迁移到其它节点
[root@redis01-jp ~]# redis-trib.rb reshard 172.31.24.139:6302
2) 然后查看“要下线的master” 中slot个数已经为0
[root@redis01-jp ~]# redis-trib.rb info 172.31.24.139:6300
172.31.24.139:6300 (42050de2...) -> 2 keys | 7461 slots | 2 slaves.
172.31.24.140:6300 (b233ca19...) -> 0 keys | 4461 slots | 1 slaves.
172.31.24.139:6302 (0d49e2f3...) -> 0 keys | 0 slots | 0 slaves.
172.31.24.141:6300 (9681bbeb...) -> 0 keys | 4462 slots | 1 slaves.
[OK] 2 keys in 4 masters.
0.00 keys per slot on average.
3) 然后删除“要下线master”的slave服务器,如下操作:
[root@redis01-jp ~]# redis-trib.rb del-node 172.31.24.139:6300 d812a49c622618b6687909df97748b6097f754b4

Removing node d812a49c622618b6687909df97748b6097f754b4 from cluster 172.31.24.139:6300
Sending CLUSTER FORGET messages to the cluster...
SHUTDOWN the node.
4) 再次检查集群中各节点的id号
[root@redis01-jp ~]# redis-trib.rb check 172.31.24.139:6300
Performing Cluster Check (using node 172.31.24.139:6300)
M: 42050de2234507bf2e8d930f8d6b0813f432f321 172.31.24.139:6300
slots:0-6461,10923-11921 (7461 slots) master
1 additional replica(s)
M: b233ca19c537ae80bdbde10e62ca231d74b00e8e 172.31.24.140:6300
slots:6462-10922 (4461 slots) master
1 additional replica(s)
S: c89dee58171151173e54f5a6442c885a927debca 172.31.24.140:6301
slots: (0 slots) slave
replicates 9681bbeb1eccdccc3ee132e33295f7b8b3bd230c
S: 17a155fadb540d0d4fe76365e16f767d07b6adc2 172.31.24.139:6301
slots: (0 slots) slave
replicates b233ca19c537ae80bdbde10e62ca231d74b00e8e
S: 8750f7512a1a757b1b9e2a931137b135a7ebdc8b 172.31.24.141:6301
slots: (0 slots) slave
replicates 42050de2234507bf2e8d930f8d6b0813f432f321
M: 9681bbeb1eccdccc3ee132e33295f7b8b3bd230c 172.31.24.141:6300
slots:11922-16383 (4462 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.

节点下线,5.0用法
1) 需要先将“要下线的master” 中的slot迁移到其它节点
redis-cli --cluster reshard 192.168.170.132:6379
2)然后删除“要下线master”的slave服务器,如下操作:
redis-cli --cluster del-node 192.168.170.132:6379
3) 再次检查集群中各节点的id号
redis-cli --cluster dheck 192.168.170.132"6379

引用4.0基础命令,5.0外部操作的全部替换为redis-cli --cluster.
实例关闭命令
redid-cli shutdown 说明:关闭时强制 bgsave 所以需要一些时间
注:在start时,需要先加载数据到内存,数据加载完毕之后 redis 才会listen 端口
集群相关命令
1、CLUSTER INFO 打印集群的信息
2、CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。
3、CLUSTER FAILOVER 手动故障转移,需要在slave节点上执行
节点 相关命令
1、CLUSTER MEET 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
2、CLUSTER FORGET 从集群中移除 node_id 指定的节点。
3、CLUSTER REPLICATE 将当前节点设置为 node_id 指定的节点的从节点。
4、CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。
槽(slot)相关命令
1、CLUSTER ADDSLOTS [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点。
2、CLUSTER DELSLOTS [slot ...] 移除一个或多个槽对当前节点的指派。
3、CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
4、CLUSTER SETSLOT NODE 将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽,然后再进行指派。
1)、CLUSTER SETSLOT MIGRATING 将本节点的槽 slot 迁移到 node_id 指定的节点中。
2)、CLUSTER SETSLOT IMPORTING 从 node_id 指定的节点中导入槽 slot 到本节点。
3)、CLUSTER SETSLOT STABLE 取消对槽 slot 的导入(import)或者迁移(migrate)。
键相关命令
1、CLUSTER KEYSLOT 计算键 key 应该被放置在哪个槽上。
2、CLUSTER COUNTKEYSINSLOT 返回槽 slot 目前包含的键值对数量。
3、CLUSTER GETKEYSINSLOT 返回 count 个 slot 槽中的键。
不支持的命令:
1、不支持SELECT 命令,集群只使用数据库 0
2、不支持多个KEY的操作 如 MSET、SUION、SINTER等命令 (因为KEYS 无法hash到同一个slot中)
redis-trib.rb 相关命令
1、redis-trib.rb create [--replicas N] host:ip [host:ip ...] 创建集群
2、redis-trib.rb add-node host:ip host:ip 将前面的host:ip 添加到集群中
3、redis-trib.rb check host:ip 检查集群的状态
4、redis-trib.rb reshard host:ip OR redis-trib.rb reshard --from host:port --to host:port --slots --yes集群重新分片
5、redis-trib.rb del-node host:ip 'NODE ID' 将节点从集群中移除