1、拉取镜像
docker pull redis:6.0.8
2、创建并启动容器
docker run -d --name redis-node-1 --net host --privileged=true -v /mydata/redis/redis-node-1/data:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381
docker run -d --name redis-node-2 --net host --privileged=true -v /mydata/redis/redis-node-2/data:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6382
docker run -d --name redis-node-3 --net host --privileged=true -v /mydata/redis/redis-node-3/data:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6383
docker run -d --name redis-node-4 --net host --privileged=true -v /mydata/redis/redis-node-4/data:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6384
docker run -d --name redis-node-5 --net host --privileged=true -v /mydata/redis/redis-node-5/data:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6385
docker run -d --name redis-node-6 --net host --privileged=true -v /mydata/redis/redis-node-6/data:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6386

3、构建主从关系
1、随意进入某个容器,如:
docker exec -it redis-node-6 /bin/bash
2、redis-cli --cluster create 宿主机IP:6381 宿主机IP:6382 宿主机IP:6383 宿主机IP:6384 宿主机IP:6385 宿主机IP:6386 --cluster-replicas 1

4、查看集群信息、节点信息
1、随意进入某个节点,如:
redis-cli -p 6381
2、cluster info
3、cluster nodes

5、查看集群情况
redis-cli --cluster check 宿主机IP:6381
6、主从扩容
6.1、创建启动6387、6388两台容器
docker run -d --name redis-node-7 --net host --privileged=true -v /mydata/redis/redis-node-7/data:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6387
docker run -d --name redis-node-8 --net host --privileged=true -v /mydata/redis/redis-node-8/data:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6388

6.2、进入6387
docker exec -it redis-node-7 bash
6.3、将6387作为主服务
redis-cli --cluster add-node 宿主机IP:6387 宿主机IP:6381
6.4、分配槽位 16384/4(总槽位/总主服务数) = 4096
redis-cli --cluster reshard 宿主机IP:6381
6.5、配置从服务6388
redis-cli --cluster add-node 宿主机IP:6388 宿主机IP:6387 --cluster-slave --cluster-master-id 主服务ID(6387的ID)
7、主从缩容
7.1、先删除从服务6390
redis-cli --cluster del-node 宿主机IP:6390 从服务ID(6390的ID)
7.2、分配槽位 16384/5(总槽位/总主服务数) = 3277【采用全部槽位分给6381的方式】

redis-cli --cluster reshard 宿主机IP:6381
备注:端口只要是主服务的端口都可以

7.3、删除主服务6389
redis-cli --cluster del-node 宿主机IP:6389 主服务ID(6389的ID)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义