Redis集群到底怎么弄,部署步骤和注意点聊聊
- 问答
- 2026-01-08 09:23:59
- 2
首先得明白为啥要用集群,简单说,就是一台Redis服务器可能不够用了,要么是数据量太大,一台机器的内存装不下;要么是访问的请求太多,一台机器处理不过来,或者怕这台机器万一坏了,整个服务就瘫痪了,集群就是为了解决这些问题,把数据分到多台机器上,让大家一起干活,互相有个照应。
部署前的准备:兵马未动,粮草先行
别急着直接敲命令,先得把准备工作做好。
- 机器准备:你需要至少6个Redis节点,为什么是6个?这是Redis集群能正常工作(具备高可用性)的最低要求,它采用了三主三从的模式,3个主节点负责存储数据和处理读写请求,3个从节点分别给每个主节点做备份,这样,即使有一个主节点宕机了,它的从节点就能顶上去成为新的主节点,集群还能继续服务,你准备6台虚拟机或者6个云服务器都可以,如果资源紧张,在一台性能足够强的机器上启动6个Redis进程也行,但生产环境强烈不建议这么干,因为一旦这台物理机出问题,整个集群就全完了。
- 安装Redis:在每台机器上都安装相同版本的Redis,建议用比较新的稳定版,安装过程很简单,下载、解压、编译就行,这里就不展开说了。
- 配置防火墙:Redis集群节点之间需要通信,有两个端口很重要,一个是客户端访问端口(比如默认的6379),另一个是集群总线端口(通常是客户端端口加10000,比如16379),你得确保每台机器的防火墙规则允许其他节点通过这两个端口进行访问,这是最容易出问题的地方之一,很多部署失败都是因为网络不通。
部署步骤:一步一步来,别跳步
准备工作做完,就可以开始真正的部署了。
-
写配置文件:给每个节点(每台机器或每个进程)单独写一个Redis配置文件,关键配置项有几个:
port 6379:每个节点用不同的端口号。cluster-enabled yes:这是最重要的,告诉Redis开启集群模式。cluster-config-file nodes-6379.conf:集群会自动生成一个配置文件,记录集群状态,你指定个名字和路径就行。cluster-node-timeout 15000:节点失联的超时时间,超过这个时间就认为它挂了,单位是毫秒。appendonly yes:建议开启,做数据持久化。 把这些配置文件分别放到对应的节点上。
-
启动所有节点:用
redis-server命令,后面跟上你的配置文件路径,把6个Redis节点全部启动起来,这时候它们还是独立的6个实例,彼此不认识。
-
组建集群:这是最关键的一步,让这6个节点互相认识,并分配好谁主谁从,从Redis 5.0开始,官方提供了
redis-cli --cluster create这个工具,非常方便,你只需要执行一条命令(根据参考资料中的方法一):redis-cli --cluster create 192.168.1.1:6379 192.168.1.2:6379 192.168.1.3:6379 192.168.1.4:6379 192.168.1.5:6379 192.168.1.6:6379 --cluster-replicas 1这条命令的意思是,把后面跟的6个节点信息告诉工具,--cluster-replicas 1表示每个主节点配1个从节点,工具会自动帮你把前三个节点分配为主节点,后三个节点分配为从节点,并完成数据分片(就是把数据分成16384个槽,平均分配给三个主节点),你输入命令后,它会给你展示一个分配方案,你确认没问题输入yes,集群就开始组建了。 -
验证集群:组建完成后,用
redis-cli -c -h 某个节点IP -p 端口号连接上集群(注意要加-c参数,表示以集群模式连接),然后可以执行cluster info查看集群状态,应该显示cluster_state:ok,再执行cluster nodes,可以看到6个节点的详细信息,包括它们的主从关系和负责的槽位范围。
部署后的注意点:这才是重点,坑都在这里
集群跑起来只是开始,日常使用和维护才是大头。

-
客户端必须支持集群:你的应用程序连接Redis的客户端库,必须是支持集群协议的,普通的客户端连上去可能只能操作一部分数据,支持集群的客户端知道通过
cluster nodes命令获取整个集群的拓扑结构,当你要存取一个数据时,客户端会先计算这个数据属于哪个槽,然后直接连接到正确的节点上进行操作,如果客户端不支持,集群就没法用。 -
理解数据分片和“跳转”:Redis集群把所有的数据分成16384个槽位,当你存一个key-value时,集群会用一个算法计算这个key属于哪个槽,因为数据是分片存储的,所以当你连接集群随意一个节点查询数据时,如果这个数据不在当前节点上,当前节点会给你返回一个“重定向”指令,告诉客户端应该去哪个节点上找,你用的支持集群的客户端会自动处理这个跳转过程,对你来说是透明的,但这也意味着,像一次操作多个key的命令(比如
mget,mset),如果这些key不在同一个节点上,就无法直接执行,有办法解决,但需要额外处理。 -
扩容和缩容是可能的,但不算简单:一开始规划的6个节点,后面数据增长了怎么办?可以增加新的主从节点到集群里,但这不是简单的“加入”就行,需要重新分配数据槽位,你需要用
redis-cli --cluster reshard命令来操作,把一部分槽位和数据从老的节点迁移到新的节点上,这个过程集群仍然可用,但可能会有一些性能影响,缩容也是类似的反向操作,所以初期规划时最好能预留一些余量。 -
网络稳定性是生命线:集群非常依赖节点之间的网络通信,如果网络不稳定,经常出现延迟高或者短暂中断,可能会导致集群脑裂或者频繁的主从切换,反而影响服务,所以确保你的节点之间的网络是高质量、低延迟的。
-
监控不能少:一定要配置监控,关注集群的状态,比如每个节点的内存使用情况(不能快满了才处理)、主从复制是否正常、是否有节点发生故障切换了等等,可以使用Redis自带的
info命令获取信息,也可以集成到更专业的监控系统里。
部署Redis集群本身有现成的工具,不算特别复杂,真正的挑战在于前期的规划(机器、网络)、客户端的兼容性选择,以及后期的运维监控和扩容管理,把这些注意点都想清楚了,你的Redis集群才能跑得又稳又快。
本文由盘雅霜于2026-01-08发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://haoid.cn/wenda/76732.html
