Redis CLUSTER 命令

命令:

//集群(cluster)
CLUSTER INFO 打印集群的信息
CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。
//节点(node)
CLUSTER MEET <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
CLUSTER FORGET <node_id> 从集群中移除 node_id 指定的节点。
CLUSTER REPLICATE <node_id> 将当前节点设置为 node_id 指定的节点的从节点。
CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。
//槽(slot)
CLUSTER ADDSLOTS <slot> [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点。
CLUSTER DELSLOTS <slot> [slot ...] 移除一个或多个槽对当前节点的指派。
CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
CLUSTER SETSLOT <slot> NODE <node_id> 将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。
CLUSTER SETSLOT <slot> MIGRATING <node_id> 将本节点的槽 slot 迁移到 node_id 指定的节点中。
CLUSTER SETSLOT <slot> IMPORTING <node_id> 从 node_id 指定的节点中导入槽 slot 到本节点。
CLUSTER SETSLOT <slot> STABLE 取消对槽 slot 的导入(import)或者迁移(migrate)。
//键 (key)
CLUSTER KEYSLOT <key> 计算键 key 应该被放置在哪个槽上。
CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的键值对数量。
CLUSTER GETKEYSINSLOT <slot> <count> 返回 count 个 slot 槽中的键。

登录:

redis-cli -c -p 6382 -h 192.168.10.220    //登录

添加master节点:

redis-trib.rb add-node 127.0.0.1:7001 127.0.0.1:7002

参数说明:
7001是新增的节点
7002集群任一个旧节点

添加slave节点:

redis-trib.rb add-node --slave --master-id 03ccad2ba5dd1e062464bc7590400441fafb63f2 127.0.0.1:7003 127.0.0.1:7002

参数说明:
slave,表示添加的是从节点
master-id 03ccad2ba5dd1e062464bc7590400441fafb63f2,主节点的node id,在这里是前面新添加的6378的node id
7003 新节点
7002 集群节点

删除节点

删除主节点:

需要先移除主节点上的所有slot

Redis CLUSTER 命令

./redis-trib.rb reshard 127.0.0.1:7002

分配集群slot

How many slots do you want to move (from 1 to 16384)? 
后面输入数字,也就是需要删除的目标节点的slot个数
What is the receiving node ID?
你想把这些slot移到那个节点 后面跟目标id

Redis CLUSTER 命令

Please enter all the source node IDs
你可以填写 all 表示即将移除的这些slot从所有的master里面选取,
如果不填写all 则填写你需要到那几个mater上提取即将移动的这些slot, 使用的是这些master节点的ID 
最后一done来表示结束

Redis CLUSTER 命令

询问你是否同意这种方式
yes 同意

移除完slot以后,在把master的slave指定给其他的master

先查看目标master的slave

redis-cli -p 6378 cluster nodes | grep slave | grep 03ccad2ba5dd1e062464bc7590400441fafb63f2

然后把slave节点加入到别的master节点
//将6385加入到新的master

redis-cli -c -p 6385 -h 192.168.10.220
192.168.10.220:6385> cluster replicate 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052  //新master的node id
OK
192.168.10.220:6385> quit
//查看新master的slave
 redis-cli -p 6379 cluster nodes | grep slave | grep 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052

删除

redis-trib.rb del-node 192.168.10.220:6385 '9c240333476469e8e2c8e80b089c48f389827265''

删除从节点 直接执行删除语句即可

新增节点和删除节点的步骤是相反的

上一篇:SpringBoot三部曲之Controller统一返回ResponseData


下一篇:Spring AOP 源码分析 - 拦截器链的执行过程