概述
搭建一套redis cluster集群。
架构
192.168.0.21:6379 主 192.168.0.23:6380 从
192.168.0.22:6379 主 192.168.0.21:6380 从
192.168.0.23:6379 主 192.168.0.22:6380 从
修改这三台服务器的host文件(选做)
| 192.168.0.21 node1 |
| 192.168.0.22 node2 |
| 192.168.0.23 node3 |
安装步骤
1. 安装gcc环境1. 安装gcc环境
| yum install gcc-c++ --nogpgcheck |
2. 进入解压目录编译,安装
| make |
| # 指定了安装目录 |
| make instal PREFIX=/usr/local/redis |
3. 进入安装目录,创建文件夹
| cd /usr/local/redis |
| mkdir -p redis_63{79,80}/{conf,pid,logs} |
4.编辑conf文件
| # 绑定端口,需要修改 |
| port 6380 |
| |
| # pid文件存储位置,文件名需要修改 |
| pidfile /usr/local/redis/redis_6380/pid/redis_6380.pid |
| |
| # log文件存储位置,文件名需要修改 |
| logfile /usr/local/redis/redis_6380/logs/redis_6380.log |
| |
| # RDB快照备份文件名,文件名需要修改 |
| dbfilename redis_6380.rdb |
| |
| # 本地数据库存储目录,需要修改 |
| dir /usr/local/redis/redis_6380 |
| |
| # 生成的集群节点配置文件名,文件名需要修改 |
| cluster-config-file nodes_6380.conf |
| |
| |
| # 保护模式:关闭 |
| protected-mode no |
| # ip限制:不限制(不推荐用bind来限制ip,应该用防火墙限制) |
| bind 0.0.0.0 |
| # 密码 |
| requirepass 123456 |
| # 主节点密码 |
| masterauth 123456 |
| |
| # 守护进行模式启动 |
| daemonize yes |
| |
| # 设置数据库数量,默认数据库为0 |
| databases 16 |
| |
| # 集群相关配置 |
| # 是否以集群模式启动 |
| cluster-enabled yes |
| |
| # 集群节点回应最长时间,超过该时间被认为下线 |
| cluster-node-timeout 15000 |
5. 启动服务
| cd /usr/local/redis/bin |
| ./redis-server /usr/local/redis/redis_6379/conf/redis.conf |
| ./redis-server /usr/local/redis/redis_6380/conf/redis.conf |

6. 注册集群节点
| ./redis-cli -h 192.168.0.21 -p 6379 -a 123456 |
| cluster meet 192.168.0.21 6380 |
| cluster meet 192.168.0.22 6379 |
| cluster meet 192.168.0.22 6380 |
| cluster meet 192.168.0.23 6379 |
| cluster meet 192.168.0.23 6380 |

7. 注册主从关系
| ./redis-cli -h 192.168.0.21 -p 6380 -a 123456 |
| cluster replicate #{node-id} |
| ./redis-cli -h 192.168.0.22 -p 6380 -a 123456 |
| cluster replicate #{node-id} |
| ./redis-cli -h 192.168.0.23 -p 6380 -a 123456 |
| cluster replicate #{node-id} |

8. 分配槽位 - 在主节点分
| ./redis-cli -h node1 -p 6379 -a 123456 cluster addslots {0..5461} |
| ./redis-cli -h node2 -p 6379 -a 123456 cluster addslots {5462..10922} |
| ./redis-cli -h node3 -p 6379 -a 123456 cluster addslots {10923..16383} |

验证
node3:6379 为主,node2:6380为从
node3:6379下线,node2:6380预期变成主
node3:6379故障恢复后,变成从节点

./redis-cli -h node3 -p 6379 -a 123456 shutdown # 停掉node3:6379

./redis-server /usr/local/redis/redis_6379/conf/redis.conf # 重新上线node3:6379

redis cluster相关命令
1. MOVED重定向 与 -c参数
重定向:key1槽位在node2上,正常登录node1,在node1set 会得到提示: 重定向到node2去操作。

-c :登录的时候带上-c参数,无论是否是集群模式,会自动帮我们进行重定向。

2. cluster命令
我就用了俩:cluster info 和cluster nodes, 其他的用的时候查吧
命令 |
描述 |
INFO |
返回当前集群信息 |
MEET |
[] 添加一个节点至当前集群 |
MYID |
返回当前节点集群ID |
NODES |
返回当前节点的集群信息 |
REPLICATE |
将当前节点作为某一集群节点的从库 |
FAILOVER |
[FORCE |
RESET |
[HARD |
ADDSLOTS |
[ ...] 为当前集群节点增加一个或多个插槽位,推荐在bash shell中执行,可通过{int..int}指定多个插槽位 |
DELSLOTS |
[ ...] 为当前集群节点删除一个或多个插槽位,推荐在bash shell中执行,可通过{int..int}指定多个插槽位 |
FLUSHSLOTS |
删除当前节点中所有的插槽信息 |
FORGET |
从集群中删除某一节点 |
COUNT |
-FAILURE-REPORTS 返回当前集群节点的故障报告数量 |
COUNTKEYSINSLOT |
返回某一插槽中的键的数量 |
GETKEYSINSLOT |
返回当前节点存储在插槽中的key名称。 |
KEYSLOT |
返回该key的哈希槽位 |
SAVECONFIG |
保存当前集群配置,进行落盘操作 |
SLOTS |
返回该插槽的信息 |
参考资料
https://www.cnblogs.com/Yunya-Cnblogs/p/14608937.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构