如何通过Redis命令行实时计算主从复制延迟的数据量大小?

云墨小哥_7674

云墨小哥_7674

2026-10-26

622人浏览

原创

master_repl_offset 和 repl_offset 分别表示主节点最新复制偏移量和从节点已处理的偏移量,二者之差即从节点数据滞后字节数;该差值需结合 repl_backlog_size 判断是否触发全量同步。

如何通过redis命令行实时计算主从复制延迟的数据量大小?

redis-cli info replication 中的 master_repl_offset 和 slave_repl_offset 是什么

这两个值分别代表主节点和从节点当前已处理的复制流字节数(即复制偏移量),单位是字节。它们不是时间延迟,而是数据量差值——直接相减就能得到从节点“落后多少字节”。这个差值越小,说明复制越实时;如果持续增大,说明从节点追不上主节点写入节奏。

注意:slave_repl_offset 在 Redis 5+ 中已更名为 second_repl_offset(当该从节点本身也是主节点时)或统一显示为 slaveX_repl_offset(X 为序号),但更可靠的方式是看 role:slave 下的 master_repl_offset 和本机的 repl_offset 字段。

  • master_repl_offset 在从节点的 INFO REPLICATION 输出中也会出现,表示主节点当前最新偏移量
  • repl_offset 是从节点自己已接收并写入复制缓冲区的偏移量(即它实际处理到的位置)
  • 真正要算的是 master_repl_offset - repl_offset,不是和 slave_repl_offset 相减(后者在从节点上不显示)

用 redis-cli 实时计算偏移量差值的单行命令

别手动复制粘贴再心算,用 shell 管道一次性出结果:

redis-cli -h 127.0.0.1 -p 6380 INFO REPLICATION | awk -F': ' '/^master_repl_offset:/ {m=$2} /^repl_offset:/ {s=$2} END {if(m&&s) print m-s}'

这条命令适用于从节点(role:slave)。其中 -h 和 -p 指向你的从节点地址;输出是纯数字,单位字节。若返回空,说明没匹配到字段——大概率是因为你连错了节点(连到了主节点)或 Redis 版本太老(repl_offset 在 4.0+ 才稳定出现在从节点 INFO 中)。

redis-tools
redis-tools

按类别查找Redis命令、检测服务器连接、监控键数量和内存占用,支持离线速查表。

下载
  • Redis 6.2+ 支持 ROLE 命令,可先确认角色:redis-cli ROLE | head -1,输出 "slave" 才继续
  • 如果从节点启用了 diskless replication(repl-diskless-sync yes),repl_offset 依然准确,不影响计算
  • 该差值会瞬时波动:主节点写入 burst、网络抖动、从节点 RDB 加载期间都会导致数值跳升

为什么不能只看 slave_repl_delay 或 info replication 的 delay 字段

slave_repl_delay(或 delay 字段)是 Redis 2.8+ 引入的秒级心跳估算值,由主节点通过 REPLCONF ACK 推算,**不是真实延迟,也不反映数据量**。它可能长期卡在 0(比如从节点停止上报 ACK),也可能因网络延迟虚高,但背后复制偏移量差为 0——此时实际没丢数据。

  • 这个 delay 值在从节点自己的 INFO REPLICATION 里不显示,只在主节点上能看到对应从节点的 slaveX_delay
  • 它无法区分“网络慢”和“从节点卡住”,而 master_repl_offset - repl_offset 能直接告诉你丢了/积压了多少字节的数据
  • 监控系统里建议优先采集偏移量差值,而不是 delay;告警阈值设为 10MB(即 10 * 1024 * 1024)比设 “delay > 60s” 更可靠

注意 repl_backlog_active 和 repl_backlog_size 对差值解读的影响

复制积压缓冲区(replication backlog)是环形缓冲区,默认 1MB(repl-backlog-size)。当从节点断线重连,只要积压区还存着它断开时的偏移量之后的数据,就能部分同步(PSYNC);否则触发全量同步(SYNC)。

所以:即使你看到 master_repl_offset - repl_offset = 5MB,只要 repl_backlog_size >= 5MB,从节点仍可能快速追上;但如果差值超过 repl_backlog_size,就注定要全量同步——这是真正危险的信号。

  • 查积压区大小:redis-cli CONFIG GET repl-backlog-size
  • 查积压区是否启用:redis-cli INFO REPLICATION | grep repl_backlog_active(1 表示启用)
  • 积压区过小是线上常见坑:主节点写入压力大时,1MB 很快被覆盖,导致频繁全量同步,加重主从负载

偏移量差值本身不难算,难的是理解它和积压区、网络、RDB/AOF 的耦合关系。很多人只盯着一个数字刷新,却没注意 repl_backlog_active 是否为 0——那意味着所有复制都走不了部分同步,差值再小也脆弱。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

redis 主从复制

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

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

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

2023.11.02

4629

19

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

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

2023.11.14

4175

11

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

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

2024.04.02

7852

6

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

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

2024.04.07

643

6

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

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

2024.04.07

756

6

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

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

2024.04.07

7882

6

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

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

2024.04.07

1160

6

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

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

2024.04.07

1196

6

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

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

2024.04.07

6838

6

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习