Redis 主从复制的实现原理是什么?

发布时间:2026/10/27 12:47:56
Redis 主从复制的实现原理是什么? Redis主从复制实现原理面试结构化主从复制一个Master主节点负责写多个Slave从节点负责读主节点的数据同步给从节点实现读写分离、数据备份。Redis主从复制分为全量复制、部分复制增量复制。1. 完整流程① 建立连接slave向master发起socket连接完成握手发送ping校验密码建立通信通道。② 全量复制第一次同步、runid不匹配时触发slave向master发送同步命令PSYNC ? -1master执行bgsavefork子进程生成RDB快照。master在生成RDB期间新收到的写命令写入复制积压缓冲区(repl_backlog_buffer)。master把RDB快照发送给slaveslave清空自身本地数据加载RDB文件。RDB传输完毕后master把积压缓冲区里的写命令持续发送给slaveslave执行这些命令最终主从数据保持一致。注意RDB生成、传输期间master可以正常处理客户端请求。③ 命令持续传播正常运行阶段主节点每执行一条写命令就异步把命令转发给所有slaveslave接收并执行命令持续保持数据同步。④ 部分复制增量复制断线重连slave网络短暂断开重新连上master不需要全量同步。每个Redis实例有runid(节点唯一ID)、复制偏移量offset。slave重连master带上自己的runid和offset。master校验runid相同并且offset还存在于复制积压缓冲区中。master直接把offset之后的增量命令发给slaveslave执行完成完成同步。如果offset已经不在缓冲区缓冲区已经被覆盖则退化为全量复制。关键概念runid每个Redis启动生成唯一ID标识节点重启会变。offset偏移量主从各自记录已经同步到哪条命令。repl_backlog_buffer复制积压缓冲区环形缓冲区master写命令除了执行还会写进这里用于断线后增量同步是有限大小缓冲区满旧数据会被覆盖。主从复制的问题异步复制master执行完写直接返回客户端数据异步发给slave会出现主从延迟。master宕机还没同步给从机的数据会丢失。缓冲区设置过小网络抖动断开后容易触发全量复制网络压力大。旧版本SYNC命令无论什么断开都只能全量复制2.8版本引入PSYNC支持部分复制。总结第一次同步走PSYNC全量复制生成RDB传输 积压缓冲区补发增量命令。短暂断线重连优先走部分复制依赖runid、offset、复制积压缓冲区。正常运行阶段master持续异步传播写命令给从节点。主从是异步存在主从延迟有数据丢失风险。补充主从没有故障转移能力故障自动切换需要搭配Redis Sentinel哨兵。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询