Redis XINFO STREAM 统计首尾消息与消费组状态
排查 Redis Streams 时,我通常先看摘要,不会一上来就扫描消息。XINFO STREAM key 是只读观测入口:默认返回 Stream 长度、消费组数量、最后生成的 ID,以及首尾记录;需要进一步定位消费状态时,再加 FULL COUNT 限制返回规模。这样既能快速判断“流是空的、正在增长,还是消费组已经落后”,也不会把观测命令误当成确认或接管命令。
官方地址:https://redis.io/docs/latest/commands/xinfo-stream/
length是当前 Stream 中的记录数,entries-added是生命周期内累计加入数,两者用途不同。first-entry和last-entry用来确认当前保留下来的首尾记录,不代表消费进度。FULL COUNT 10适合排查消费组与 PEL 摘要;不要用COUNT 0读取大流的全部详情。
用默认摘要确认 Stream 的基本状态
先执行最小查询,重点看四组信息:当前长度、消费组数量、最近生成的 ID、首尾记录。示例中的命令只是调用示意,不代表已在本文环境执行。
# 只读查看 Stream 摘要,适合先判断数据是否存在 redis-cli XINFO STREAM orders # 只读取消费组摘要,并限制每组返回的明细数量 redis-cli XINFO STREAM orders FULL COUNT 10
如果 length 为 0,不能直接推断 key 一定不存在:Stream 允许保留为空的结构,尤其当它关联过消费组时,应该结合 key 存在性和 groups 一起判断。若 first-entry、last-entry 有值,它们展示的是当前 Stream 中仍保留的边界记录。

区分消息数量、生成计数与首尾记录
生产排查最容易混淆的是三个数字。length 表示当前仍在 Stream 中的记录数;entries-added 记录生命周期内通过 XADD 加入过的总量,即使旧消息后来被裁剪,也不会随当前长度一起减少;last-generated-id 是最近生成的 ID,用于判断写入侧是否仍在推进。
| 字段 | 回答的问题 | 不要这样理解 |
|---|---|---|
| length | 现在还保留多少条记录 | 不是累计写入量 |
| entries-added | 生命周期内加入过多少条 | 不是当前可读取条数 |
| first-entry / last-entry | 当前首条和末条记录是什么 | 不是消费组游标 |
| groups | 定义了多少个消费组 | 不是积压条数 |
例如 entries-added 很大而 length 较小,可能只是保留策略生效;如果 last-generated-id 长时间不变,才值得继续检查生产端是否停止写入。不要仅凭首尾 ID 判断某个消费者已经处理到哪里,消费进度要看消费组信息。
用 FULL COUNT 观察消费组和待处理摘要
FULL 会把消费组、PEL 和消费者明细纳入返回结果。对每个消费组,常用字段是 last-delivered-id、entries-read、lag 和 pel-count;消费者层面再看名称、空闲时间和待处理数量。COUNT 只限制 FULL 返回的 Stream/PEL 明细数量,不能把它当成“只统计前 N 条消息”的过滤器。
# 控制 FULL 结果规模,先取少量明细判断是否存在异常消费者 redis-cli XINFO STREAM orders FULL COUNT 10 # 生产巡检不要默认拉取全部明细;COUNT 0 可能带来很大的返回量 # 只有在流规模可控且确实需要完整 PEL 时再使用 COUNT 0
lag 表示仍等待该消费组投递的逻辑数量,在某些游标关系无法计算时可能为空;pel-count 则是已投递但尚未确认的记录数。两者同时偏高,通常说明“未投递”和“已投递未确认”都需要分开处理,而不是只增加消费者数量。

按只读观测边界形成检查清单
我会按下面的顺序记录一次巡检:先记 length 和 last-generated-id,确认流是否在增长;再看 groups 与首尾记录,判断结构和保留边界;最后只在需要时使用 FULL COUNT 10,比较各组的 lag、pel-count 和消费者状态。
这条命令不会接管超时消息,也不会确认消息、删除记录或裁剪历史。需要恢复消费者时看 XAUTOCLAIM/XCLAIM,需要改变 PEL 或消息确认状态时看 XACK 相关命令,需要按长度或 ID 控制保留量时再看 XTRIM。把这些动作和 XINFO 的只读观测分开,排查记录才不会出现“看到了积压就误删或误确认”的操作风险。
常见问题
XINFO STREAM 能直接看出哪个消费者最慢吗?
可以提供消费者级的空闲和待处理摘要,但“最慢”仍要结合采样时间、处理耗时和业务吞吐判断,不能只看一个字段。
为什么 length 和 entries-added 差很多?
前者是当前保留量,后者是生命周期累计加入量。裁剪、删除或流长期运行都会让两者自然拉开。
FULL COUNT 0 是否最准确?
它会请求完整明细,但准确不等于适合生产巡检。大流或大 PEL 应优先用小 COUNT 取摘要,必要时再分批深入。
MySQL Performance Schema 按线程聚合等待事件
- 上一篇
- MySQL Performance Schema 按线程聚合等待事件
- 下一篇
- MySQL 不同字符集列的索引长度参数对比
-
- 数据库 · Redis | 22分钟前 |
- Redis Streams XPENDING 怎样按消费者定位积压
- 278浏览 收藏
-
- 数据库 · Redis | 25分钟前 |
- Redis Cluster hash tag 怎样让相关键落在同一槽位
- 450浏览 收藏
-
- 数据库 · Redis | 28分钟前 |
- Redis WAIT 与 WAITAOF 的复制确认边界
- 180浏览 收藏
-
- 数据库 · Redis | 30分钟前 | Redis · redis 失效通知 CLIENT TRACKING 客户端缓存 NOLOOP
- Redis CLIENT TRACKING 的 NOLOOP 写入抑制与重新跟踪步骤
- 234浏览 收藏
-
- 数据库 · Redis | 45分钟前 |
- Redis LPUSHX 怎样只在已有列表时写入
- 413浏览 收藏
-
- 数据库 · Redis | 49分钟前 |
- Redis Functions 的只读标记与副本执行边界
- 236浏览 收藏
-
- 数据库 · Redis | 50分钟前 |
- Redis hash-field 过期命令的字段级缓存设计
- 130浏览 收藏
-
- 数据库 · Redis | 1小时前 |
- Redis HSTRLEN 怎样判断 Hash 字段值长度
- 257浏览 收藏
-
- 数据库 · Redis | 15小时前 | Redis · Sorted Set · redis Sorted Set ZLEXCOUNT ZREMRANGEBYLEX 字典序范围
- Redis ZREMRANGEBYLEX 的区间方向怎样决定删除范围
- 339浏览 收藏
-
- 数据库 · Redis | 15小时前 |
- Redis ZREMRANGEBYLEX 怎样删除同分数成员的字典区间
- 214浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 816次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 807次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 899次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 870次使用
-
- MMBench
- MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
- 693次使用
-
- Redis Stream XTRIM 如何避免消费组积压无限增长
- 2026-09-12 501浏览
-
- Redis AOF rewrite 期间如何判断磁盘与内存压力
- 2026-09-12 501浏览
-
- Redis RDB 和 AOF 怎么按可接受数据丢失量选择
- 2026-09-08 501浏览
-
- Redis XAUTOCLAIM 之后为什么仍有 pending:JUSTID、PEL 与消息删除边界
- 2026-08-29 501浏览
-
- Redis SET 的 GET 与 KEEPTTL 怎么一起验收:旧值返回、续期与回滚边界
- 2026-08-20 501浏览

