创建redis实例
docker run -d --name redis-node-1 --net host --privileged=true -v /home/admin/docker/redis/redis-node-1/data:/data redis --cluster-enabled yes --appendonly yes --port 6381
docker run -d --name redis-node-2 --net host --privileged=true -v /home/admin/docker/redis/redis-node-2/data:/data redis --cluster-enabled yes --appendonly yes --port 6382
docker run -d --name redis-node-3 --net host --privileged=true -v /home/admin/docker/redis/redis-node-3/data:/data redis --cluster-enabled yes --appendonly yes --port 6383
docker run -d --name redis-node-4 --net host --privileged=true -v /home/admin/docker/redis/redis-node-4/data:/data redis --cluster-enabled yes --appendonly yes --port 6384
docker run -d --name redis-node-5 --net host --privileged=true -v /home/admin/docker/redis/redis-node-5/data:/data redis --cluster-enabled yes --appendonly yes --port 6385
docker run -d --name redis-node-6 --net host --privileged=true -v /home/admin/docker/redis/redis-node-6/data:/data redis --cluster-enabled yes --appendonly yes --port 6386
创建集群
redis-cli --cluster create 192.168.247.128:6381 192.168.247.128:6382 192.168.247.128:6383 192.168.247.128:6384 192.168.247.128:6385 192.168.247.128:6386 --cluster-replicas 1
查看集群信息
redis-cli --cluster check 192.168.247.128:6381
- 主:6381 从: 6385
- 主:6382 从: 6386
- 主:6383 从: 6384
验证:
在6381上设置的key根据hash槽分配到6382上,6382对应的从redsi为6286
容错迁移
停止或者删除reids-node-2:
docker stop redis-node-2
或者docker rm -f redis-node-2
查看集群状态
恢复之前的主从关系
启动redis-node-2,启动后,该实例是从redis,对应的主reids端口为6386
将6382变成主redsi,停止redsi-node-6,等一会(重启redis-node-6或者停止后立刻启动,6382可能还是从reids),然后在启动redsi-node-6
![]()
扩容
添加实例
docker run -d --name redis-node-7 --net host --privileged=true -v /home/admin/docker/redis/redis-node-7/data:/data redis --cluster-enabled yes --appendonly yes --port 6387
docker run -d --name redis-node-8 --net host --privileged=true -v /home/admin/docker/redis/redis-node-8/data:/data redis --cluster-enabled yes --appendonly yes --port 6388
将8367加入到集群
redis-cli --cluster add-node 192.168.247.128:6387 192.168.247.128:6382
将6388设置为6387的从节点
redis-cli --cluster add-node 192.168.247.128:6388 192.168.247.128:6387 --cluster-slave --cluster-master-id 94dec9709a5d7a5239c4d8d476de50176c82df90
查看集群信息
redis-cli --cluster check 192.168.247.128:6381
重新分配卡槽
redis-cli --cluster reshard 192.168.247.128:6381
查看集群信息
redis-cli --cluster check 192.168.247.128:6381
重新reshard后,之前在6382下的key为m-k1在6387节点下,且6382对应的从节点6386下无该数据,,6387对应的从节点6388下有该数据。
同一个key对应的槽位相同,扩容后,key将迁移到相应的节点上
缩容
删除节点6388并查看集群信息
redis-cli --cluster del-node 192.168.247.128:6388 5020ddaf37acdf00adc0188b4f6bb5061a56e3cb
将6387的卡槽信息转给6382
redis-cli --cluster reshard 192.168.247.128:6381
查看集群信息
redis-cli --cluster check 192.168.247.128:6382
删除节点6387并查看集群信息
redis-cli --cluster del-node 192.168.247.128:6387 94dec9709a5d7a5239c4d8d476de50176c82df90
其它
查看集群信息的相关命令