Redis主从复制原理:面试必考的高可用基石
作为程序员,Redis的主从复制机制简直是面试中的“钉子户”。今天咱们就用人话拆解这个高频考点,彻底搞懂它的工作原理!

🔗 一、主从复制是啥?为啥要用它?
简单说就是主节点(Master) 把数据同步给从节点(Slave) 的过程。核心目的就俩:
- 数据热备份:主库崩了,从库能顶上(配合哨兵实现故障转移)
- 读写分离:主库写,从库读,抗高并发
📁 2025年Java面试宝典更新啦!
链接: https://pan.baidu.com/s/1RUVf75gmDVsg8MQp4yRChg?pwd=9b3g
提取码: 9b3g
⚙️ 二、主从复制工作流程(核心三阶段)
🔌 阶段1:建立连接
- 从节点执行
slaveof <master_ip> <master_port> - 从节点创建socket连接主节点
- 主节点验证后,建立专用于复制的长连接
💡 面试坑点:复制缓冲区(repl_backlog_buffer) 在主节点初始化时就创建了,不是等从节点连上才建!
📦 阶段2:首次全量同步(RDB快照)
- 从节点发送
PSYNC ? -1请求全量复制 - 主节点执行
bgsave生成RDB文件

- RDB文件通过socket传输给从节点
- 从节点清空旧数据,加载RDB
- 主节点将复制缓冲区的写命令发给从节点(补增量)
🔄 阶段3:持续增量同步
- 主节点收到新写命令,同时写入复制缓冲区
- 主节点异步推送命令到从节点(类似发布订阅)
- 从节点执行命令保持数据同步
🚨 三、断线重连怎么处理?(部分复制机制)
这里就体现出 复制偏移量(repl_offset) 和 复制积压缓冲区(repl_backlog) 的精妙设计了:
- 从节点重连时携带自己的复制偏移量
- 主节点检查偏移量是否还在积压缓冲区中:
- ✅ 存在:发送缺失的部分命令(部分复制)
- ❌ 不存在:触发全量复制
📊 关键数据结构:
master_repl_offset(主节点当前偏移量)slave_repl_offset(从节点当前偏移量)
⚡️ 四、性能优化重点
- 避免全量复制风暴:多个从节点同时重启时错开同步时间
- 合理设置repl-backlog-size:根据业务写入量调整(通常设置为:写入速度 * 网络中断时长 * 安全系数)
- 主节点禁用持久化时:务必关闭自动重启,防止空数据集覆盖从节点
💰 技术人薅羊毛时间
需要购买面试鸭会员的同学注意了!通过 面试鸭返利网 下单可返现25元,直接抵扣会员费:
❓ 高频面试题口述要点
Q:主从复制延迟怎么监控?
A:通过 info replication 查看 master_repl_offset 和 slave_repl_offset 差值
Q:主节点宕机后数据会丢失吗?
A:取决于配置:
- 异步复制:可能丢失部分数据(主节点写入后未同步即宕机)
- WAIT命令:可实现强一致性(但性能骤降)
Q:主从节点配置不一致会怎样?
A:可能导致内存溢出!比如主节点关闭maxmemory,从节点开启时,从节点可能被主节点的大数据集撑爆
掌握这些原理,面试时遇到Redis主从复制问题直接拿捏!更多分布式系统实战技巧,记得用好你的面试鸭会员~



