- 拉去redis镜像
docker pull redis
- 启动redis容器
docker run -d --name redis-node-1 --net host --privileged=true -v /home/redisJQ/redis-node-1:/data redis:latest --cluster-enabled yes --appendonly yes --port 6381
docker run -d --name redis-node-2 --net host --privileged=true -v /home/redisJQ/redis-node-2:/data redis:latest --cluster-enabled yes --appendonly yes --port 6382
docker run -d --name redis-node-3 --net host --privileged=true -v /home/redisJQ/redis-node-3:/data redis:latest --cluster-enabled yes --appendonly yes --port 6383
docker run -d --name redis-node-4 --net host --privileged=true -v /home/redisJQ/redis-node-4:/data redis:latest --cluster-enabled yes --appendonly yes --port 6384
docker run -d --name redis-node-5 --net host --privileged=true -v /home/redisJQ/redis-node-5:/data redis:latest --cluster-enabled yes --appendonly yes --port 6385
docker run -d --name redis-node-6 --net host --privileged=true -v /home/redisJQ/redis-node-6:/data redis:latest --cluster-enabled yes --appendonly yes --port 6386
- 自动创建3主3从的集群
redis-cli --cluster create 192.168.10.234:6381 192.168.10.234:6382 192.168.10.234:6383 192.168.10.234:6384 192.168.10.234:6385 192.168.10.234:6386 --cluster-replicas 1
- 查看集群状态
- redis的主从连接
root@localhost:/data# redis-cli -p 6381 -c
参数-c代表的是优化路由,使其在单机连接下存不不进去的情况跳转或重定向到salve节点存
这个是在单机连接下redis-cli -p 6381报错:
加入-c的参数后的,就存到slave节点了
- redis的扩容一个master节点。
redis-cli --cluster add-node 192.168.10.234:6387 192.168.10.234:6381
重新配槽位
redis-cli --cluster reshard 宿主机ip:端口(为主机节点端口)
redis-cli --cluster reshard 192.168.10.234:6381
检查每个节点的槽位数
- redis的扩容一个slave节点
redis-cli --cluster add-node 宿主机ip:端口(新加的redis节点端口) 宿主机ip:端口(端口为主节点6381)
redis-cli --cluster add-node 192.168.10.234:6388 192.168.10.234:6387 --cluster-slave --cluster-master-id da1b7f874be99c288e3c6f34fcf3c34626288de0
- 主从缩容
缩容的话先从slave开始删除再删master
redis-cli --cluster del-node 宿主机ip:端口(删除的slave节点端口) 删除的slave节点的id
redis-cli --cluster del-node 192.168.10.234:6388 e59c0f920c24a2b6b3facc0af83925f6dfb93a33
对6387这个master的槽位进行转移到6381master节点重新分配操作
redis-cli --cluster reshard 192.168.10.234:6381
检查槽位
redis-cli --cluster check 192.168.10.234:6381
删除6387的槽号id