详解 Redis repl_backlog_buffer(如何判断增量同步)

一、repl_backlog_buffer

复制积压缓冲区(Replication Backlog Buffer) 是一个环形内存区域(Ring Buffer),用于临时保存主节点最近写入的写命令,以支持从节点断线重连后的增量同步

1.1 三个复制偏移量

复制偏移量(offset)是一个 64 位无符号整数 ,是主节点为所有写入操作生成的全局连续递增的序列号 ,表示从主节点启动以来所有写命令的字节总量(按 Redis 协议格式序列化后的字节数)。

例如:主节点执行 SET key value,这条命令会被序列化成 Redis 协议格式(如 *3\r\n$3\r\nSET\r\n$3\r\nkey\r\n$5\r\nvalue\r\n),总字节数为 30 字节。此时,主节点的 master_repl_offset 会递增 30。

Redis 的设计目标是长期运行的高吞吐系统。假设每秒写入 100MB 数据:耗尽时间 ≈ 1.84e19 / (100 * 1e6) / 31536000 ≈ 5845 年

  1. master_repl_offset:主节点复制偏移量,表示主节点已写入的复制数据流的总字节数
    1. 主节点重启或故障切换后,新主节点的 master_repl_offset 会重置;
  2. slave_repl_offset:从节点的复制进度;
  3. backlog_first_byte_offset:repl_backlog_buffer 的起始偏移量
    1. slave_repl_offset >= backlog_first_byte_offset,则增量同步;否则需全量同步;

1.2 repl_backlog_buffer 清理时机

  1. 缓冲区写满时覆盖旧数据:按照 FIFO 的方式循环覆盖旧数据;
  2. 所有从节点断开连接时释放缓冲区;
相关推荐
@LetsTGBot搜索引擎机器人13 小时前
2025 Telegram 最新免费社工库机器人(LetsTG可[特殊字符])搭建指南(含 Python 脚本)
数据库·搜索引擎·机器人·开源·全文检索·facebook·twitter
计算机毕设VX:Fegn089514 小时前
计算机毕业设计|基于springboot + vue动物园管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
冉冰学姐14 小时前
SSM校园排球联赛管理系统y513u(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架应用·开题报告、
Tony Bai15 小时前
【分布式系统】03 复制(上):“权威中心”的秩序 —— 主从架构、一致性与权衡
大数据·数据库·分布式·架构
wb0430720116 小时前
SQL工坊不只是一个ORM框架
数据库·sql
至善迎风16 小时前
Redis完全指南:从诞生到实战
数据库·redis·缓存
QQ_43766431418 小时前
Redis协议与异步方式
数据库·redis·bootstrap
纪莫18 小时前
技术面:MySQL篇(InnoDB事务执行过程、事务隔离级别、事务并发异常)
数据库·java面试⑧股
Nerd Nirvana18 小时前
数据库模型全景:从原理到实践的系统性指南
数据库·oracle·电力行业
SelectDB18 小时前
从 Greenplum 到 Doris:集群缩减 2/3、年省数百万,度小满构建超大规模数据分析平台经验
数据库·数据分析·apache