Redis 主从复制原理怎么通过全量同步和增量同步实现

夏芳吖_9164

夏芳吖_9164

2026-09-04

935人浏览

原创

redis主从复制通过全量同步和增量同步协同工作:首次连接或偏移量超出缓冲区范围时触发全量同步,由主节点生成rdb并发送+补发积压命令;日常运行及短时断连则依赖replid和offset校验,执行高效增量同步。

redis 主从复制原理怎么通过全量同步和增量同步实现

Redis 主从复制通过全量同步和增量同步两个阶段协同工作,确保从节点数据既完整又实时。核心逻辑是:首次连接或断连后无法追平时走全量;日常运行和短时断连则靠增量高效补漏。

全量同步:建立初始一致状态

这是从节点“第一次认识”主节点时的重载过程,目标是获得一份完整、准确的数据快照。

  • 从节点发送 PSYNC ? -1 请求,表明无历史复制信息,需全量拉取
  • 主节点执行 BGSAVE 启动后台子进程生成 RDB 文件,主进程继续服务不阻塞
  • RDB 生成期间所有新写命令被暂存进 复制积压缓冲区(repl_backlog)
  • RDB 文件传输到从节点后,从节点清空旧数据、加载 RDB,完成基础数据重建
  • 主节点再把 repl_backlog 中积攒的命令发给从节点执行,让其追上断档期的变更

增量同步:维持常态数据一致性

全量完成后,主从进入命令传播阶段,靠偏移量(offset)和复制ID(replid)精准识别“差多少”,只传缺失部分。

Java Maven Code Review
Java Maven Code Review

审查Java Maven项目(ZIP压缩包或GitLab仓库URL),检查代码规范、命名、模块边界、可维护性问题以及重复代码。

下载
  • 主节点每执行一条写命令,就向所有在线从节点广播该命令,并递增自己的 offset
  • 从节点执行命令后也更新本地 offset,定期上报给主节点
  • 网络短暂中断后重连,从节点带上当前 replid 和 offset 发起 PSYNC
  • 主节点检查:若 replid 匹配且 offset 落在 repl_backlog 可覆盖范围内,直接发送缺失命令段(Partial Resync)
  • repl_backlog 是固定大小的环形缓冲区,过小会导致断连稍久就无法增量,被迫回退全量

触发机制:什么时候走哪条路

Redis 不会猜测,而是严格依据两个参数做决策:

  • replid 不一致 → 视为全新从节点或主节点重启 → 强制全量同步
  • replid 一致但 offset 超出 repl_backlog 范围 → 缓冲区已覆盖旧数据 → 只能全量
  • replid 一致且 offset 有效 → 精准定位断点 → 执行增量同步

关键保障设计

整个过程依赖几个底层机制支撑可靠性与性能平衡:

  • 异步非阻塞:BGSAVE 和网络传输都不影响主节点处理客户端请求
  • 从节点可读:即使正在加载 RDB 或追赶命令,仍可响应读请求(数据可能滞后)
  • 一主多从扩展性:主节点只需维护一份 repl_backlog,多个从节点各自按需同步
  • backlog 大小可调:通过 repl-backlog-size 配置,越大越能容忍长断连,但占更多内存

相关专题

更多
常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.02

4249

19

内存数据库有哪些
内存数据库有哪些

内存数据库有Redis、Memcached、Apache Ignite、VoltDB、TimesTen、H2 Database、Aerospike、Oracle TimesTen In-Memory Database、SAP HANA和ache Cassandra。更多关于内存数据库相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.14

3735

11

mongodb和redis哪个读取速度快
mongodb和redis哪个读取速度快

redis 的读取速度比 mongodb 更快。原因包括:1. redis 使用简单的键值存储,而 mongodb 存储 json 格式的数据,需要解析和反序列化。2. redis 使用哈希表快速查找数据,而 mongodb 使用 b-tree 索引。因此,redis 在需要高性能读取操作的应用程序中是一个更好的选择。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.02

6732

6

redis怎么做缓存服务器
redis怎么做缓存服务器

redis 作为缓存服务器的答案:redis 是一款开源、高性能、分布式的键值存储,可作为缓存服务器使用。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

623

6

redis怎么解决数据一致性
redis怎么解决数据一致性

redis 提供了两种一致性模型,以维护副本数据一致性:强一致性 (sync) 确保写操作仅在复制到所有从节点后才完成;最终一致性 (async) 则在主节点上写操作后认为已完成,牺牲一致性换取性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

736

6

mysql和redis怎么保证双写一致性
mysql和redis怎么保证双写一致性

确保 mysql 和 redis 双写一致性的技术包括:1、事务性更新:同时更新 mysql 和 redis,保证一致性;2、主从复制:mysql 主服务器更改同步到 redis 从服务器;3、基于事件的更新:mysql 记录更改并发送到 redis等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

6282

6

redis缓存一般存些什么数据
redis缓存一般存些什么数据

redis缓存中存储的数据类型包括:字符串、哈希、列表、集合、有序集合、位图、地理空间数据和hyperloglog。这些数据类型适用于存储各种数据,从简单信息到复杂对象和地理位置。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

1140

6

redis的8种数据类型有哪些
redis的8种数据类型有哪些

redis 提供 8 种数据类型:字符串(文本、数字、二进制)、哈希(键值对)、列表(有序集合)、集合(无序唯一元素)、有序集合(按分数排序)、地理空间(地理位置)、hyperloglog(估计大数据基数)和位图(位序列存储)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

996

6

redis主要作用有哪些
redis主要作用有哪些

redis 的主要作用包括:1. 缓存数据,提高访问速度;2. 充当消息队列,实现消息传递;3. 存储各种数据类型,如字符串、散列和集合;4. 管理会话信息,确保可靠性和可用性;5. 限制请求速率,防止服务器超载等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

5618

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习