上一篇文章讲到扩容节点:
RedisCluster集群模式扩容节点_huangyuewang的专栏-CSDN博客
1,把7006哈希槽给到7000节点
缩容节点把7006和7007下线;
案例:把7006的4096哈希槽给到 7000节点
先找到7006和7000的集群ID:
7006: beb327340e04d25fb6a0bf0b52a0440c1e170ad2
7000: d654e32582c2a73ee8f505b693063db3c3f29e84
执行命令 reshard 进行缩容
# 7006节点ID:beb327340e04d25fb6a0bf0b52a0440c1e170ad2
# 7000节点ID:d654e32582c2a73ee8f505b693063db3c3f29e84
# 4096 是把7006节点的所有哈希槽给到 7000节点
/application/redis/bin/redis-cli --cluster reshard 172.16.166.122:7000 --cluster-from beb327340e04d25fb6a0bf0b52a0440c1e170ad2 --cluster-to d654e32582c2a73ee8f505b693063db3c3f29e84 --cluster-slots 4096
执行后弹出提示,输入 yes
查看 cluster nodes集群,看是否缩容成功
可以看到7006已经没有哈希槽了,而7000多出了4096哈希槽
2,在集群中删除7006和7007节点
删除7007 slave从节点:
#7007的集群ID:3af92f614b394efa14ed46299be3c9064124f8ed
/application/redis/bin/redis-cli --cluster del-node 172.16.166.122:7000 3af92f614b394efa14ed46299be3c9064124f8ed
执行结果:
删除7006 master 主节点:
#7006集群ID:56324f7b5fd09855f77e24ab384b70728e83173b
/application/redis/bin/redis-cli --cluster del-node 172.16.166.122:7000 56324f7b5fd09855f77e24ab384b70728e83173b
继续查看集群cluster nodes 详细信息:
可以看到集群已经没有7006和7007节点了。
可能有朋友会问,那么之前存到7006的key到哪去了?
答:之前set d 4 是存到7006节点的(下图),由于缩容时指定了7000节点,把所有哈希槽都给了7000了,那么get d 就会从7000节点找到该哈希槽
那么执行 get d 就会从7000节点找到该key
到这里,缩容完成。