XINFO GROUPS
返回流的消费者组列表。
语法
XINFO GROUPS key
引入版本:5.0.0
复杂度摘要:O(1)
此命令返回存储在 key 的流的所有消费者组的列表。
默认情况下,仅为每个组提供以下信息:
- 姓名:消费者组名称
- 消费者:群组内消费者数量
- 待定:组待处理条目列表(PEL)的长度,这些消息是已发送但尚未确认的消息
- 最后交付 ID:最后交付给该组消费者的条目的ID
- 条目读取:交付给组消费者的最后一个条目的逻辑“读取计数器”
- 滞后:流中仍在等待传递给组消费者的条目数,如果无法确定该数字,则为 NULL。
必需参数
key
流键。
示例
> XINFO GROUPS mystream
1) 1) "name"
2) "mygroup"
3) "consumers"
4) (integer) 2
5) "pending"
6) (integer) 2
7) "last-delivered-id"
8) "1638126030001-0"
9) "entries-read"
10) (integer) 2
11) "lag"
12) (integer) 0
2) 1) "name"
2) "some-other-group"
3) "consumers"
4) (integer) 1
5) "pending"
6) (integer) 0
7) "last-delivered-id"
8) "1638126028070-0"
9) "entries-read"
10) (integer) 1
11) "lag"
12) (integer) 1
详细说明
消费群体滞后
给定消费者组的滞后是组的 entries_read 和流的 entries_added 之间范围内的条目数。换句话说,它是尚未交付给该组消费者的条目数量。
该指标的值和趋势有助于制定有关消费者群体的扩展决策。您可以通过向组中添加更多消费者来解决高滞后值问题,而低值可能表明您可以从组中删除消费者以缩小规模。
Redis 通过保留两个计数器来报告消费者组的滞后:添加到流中的所有条目的数量和消费者组进行的逻辑读取的数量。 The lag is the difference between these two.
流的计数器(XINFO STREAM 命令的 entries_added 字段)随着每个 XADD 增加 1,并对在其生命周期内添加到流的所有条目进行计数。
消费者组的计数器 entries_read 是该组已读取的条目的逻辑计数器。重要的是要注意,该计数器只是启发式计数器而不是准确计数器,因此使用术语“逻辑”。计数器尝试反映组 应该读过 达到其当前 last-delivered-id 的条目数。 entries_read 计数器仅在完美世界中准确,其中消费者组从流的第一个条目开始并处理其所有条目(即,在处理之前没有删除任何条目)。
有两种特殊情况该机制无法报告滞后:
- 使用任意最后传递的 ID 创建或设置消费者组(分别为
XGROUP CREATE和XGROUP SETID命令)。任意 ID 是不是流的第一个条目、最后一个条目或零(“0-0”)ID 的 ID 的任何 ID。 - 组的
last-delivered-id和流的last-generated-id之间的一个或多个条目被删除(使用XDEL或修剪操作)。
在这两种情况下,组的读取计数器都被视为无效,并且返回值被设置为 NULL 以表明滞后当前不可用。
However, the lag is only temporarily unavailable. It is restored automatically during regular operation as consumers keep processing messages.一旦消费者组将流中的最后一条消息传递给其成员,它将使用正确的逻辑读取计数器进行设置,并且可以恢复跟踪其滞后。
Redis Software 与 Redis Cloud 兼容性
| Redis 软件 |
Redis Cloud |
说明 |
|---|---|---|
| ✅ 标准 |
✅ 标准 |
返回值
RESP2
数组回复:消费者组列表。
RESP3
数组回复:消费者组列表。
资料来源:Redis 官方 XINFO GROUPS 文档;中文内容参考 Redis 文档许可。