✅ 一、什么是 Redis 主从集群?
Redis 主从(Master-Slave)集群是一种最基础的集群方式:
一台 Redis 作为主节点(Master),负责写操作;
一到多台 Redis 作为从节点(Slave),负责读操作并实时同步主节点的数据。
🔁 数据同步方式:主同步数据给从(单向复制)
✅ 二、主从架构图(示意)
写操作Client ------> Redis Master|自动复制|+------------+------------+| |Redis Slave 1 Redis Slave 2↑ ↑读请求 读请求
-
所有数据写入都只进 Master
-
从节点只接受数据同步和读请求,不能写入
-
一般搭配读写分离使用,提高读性能
✅ 三、主从复制工作机制
1️⃣ 主从建立连接
使用命令:
slaveof <master_ip> <master_port>
一旦从节点执行这个命令,它会:
-
向主节点发送 PSYNC(部分同步)请求
-
如果是第一次连接,会触发全量同步(RDB)
2️⃣ 数据同步流程
-
初次连接:从节点向主节点请求全量同步(传输 RDB 快照 + 后续 AOF 命令)
-
增量同步:从节点定期获取主节点写操作的增量(命令流)并执行,保持一致性
3️⃣ 主节点断连后恢复
-
从节点会尝试重连
-
若主节点恢复上线,可以自动恢复同步
✅ 四、配置主从集群(手动方式)
1️⃣ 配置主节点(master)
redis-master.conf
port 6379
appendonly yes
2️⃣ 配置从节点(slave)
redis-slave.conf
port 6380
slaveof 127.0.0.1 6379 # 指定主节点地址
3️⃣ 启动服务
redis-server redis-master.conf
redis-server redis-slave.conf
✅ 五、主从集群的优点
优点 | 说明 |
---|---|
提高读取性能 | 可以让从节点承担读取压力,实现读写分离 |
容灾能力 | 主节点宕机时,数据仍存在从节点中 |
数据安全性增强 | 多副本存储,降低数据丢失风险 |
部署简单 | 比 Cluster 简单很多 |
✅ 六、主从集群的缺点
缺点 | 说明 |
---|---|
主节点是单点 | 如果主节点宕机,系统不能写入,需要手动切换主从 |
无自动故障转移 | 无法自动将从节点提升为主,需要人为干预或借助 Sentinel |
数据一致性延迟 | 从节点通过异步复制,主从间可能存在数据延迟 |
扩展能力有限 | 所有数据仍在主节点上,不能分片(即不能无限扩展容量) |
✅ 七、如何实现主从 + 高可用?
可以通过引入 Redis Sentinel(哨兵)机制 来解决主从架构的最大问题:主节点宕机时自动切换。
Redis Sentinel 负责监控主节点状态,并在主节点故障时自动把某个从节点“升级”为新主节点。
结构就变成这样:
+---------------------+| Sentinel |+---------+-----------+|+-------+--------+| |Redis Master <---- Sentinel 检测状态|+----+----+| |
Slave 1 Slave 2 <-- 新主选举候选
✅ 八、主从适用场景
场景 | 说明 |
---|---|
读多写少系统 | 例如:商品浏览、文章详情页缓存等 |
有容灾要求但数据量不大 | 中小型业务系统 |
作为 Redis Cluster 的组成部分 | Redis Cluster 的每个主节点也可以有从节点 |
✅ 总结一句话:
Redis 主从集群是最基本的高可用架构,主节点负责写、从节点负责读和备份,但缺乏自动切换机制,推荐搭配 Sentinel 使用。