- 用法
-
XINFO GROUPS key
- 复杂度
- O(1)
- 起始版本
- 5.0.0
- ACL 类别
- @stream, @read, @slow
- name:消费者组的名称
- consumers:组中的消费者数量
- pending:组的待处理条目列表 (PEL) 的长度,这些消息已送达但尚未被确认
- last-delivered-id:传递给组中消费者的最后一个条目的 ID
- entries-read:传递给组中消费者的最后一个条目的逻辑“读取计数器”
- lag:流中仍在等待传递给组中消费者的条目数量,或者当该数量无法确定时为 NULL。
- 消费者组以任意的最后传递 ID 创建或设置(分别是
XGROUP CREATE
和XGROUP SETID
命令)。任意 ID 是指不是流的第一个条目 ID、其最后一个条目 ID 或零(“0-0”)ID 的任何 ID。 - 组的
last-delivered-id
和流的last-generated-id
之间的一个或多个条目被删除(通过XDEL
或修剪操作)。
此命令返回存储在 <key>
的流中的所有消费者组的列表。
默认情况下,每个组仅提供以下信息
消费者组延迟
给定消费者组的延迟是组的 entries_read
和流的 entries_added
之间范围内的条目数量。换句话说,它是尚未传递给组中消费者的条目数量。
此指标的值和趋势有助于做出关于消费者组的扩展决策。您可以通过向组中添加更多消费者来解决高延迟值,而低延迟值可能表明您可以从组中删除消费者以进行缩减。
Valkey 通过维护两个计数器来报告消费者组的延迟:添加到流中的所有条目数量和消费者组进行的逻辑读取数量。延迟是这两者之间的差值。
流的计数器(XINFO STREAM
命令的 entries_added
字段)在每次 XADD
时递增一,并计算流在其生命周期中添加的所有条目。
消费者组的计数器 entries_read
是组已读取条目的逻辑计数器。需要注意的是,此计数器只是一种启发式方法,而非精确计数器,因此使用了“逻辑”一词。该计数器试图反映组为了达到其当前的 last-delivered-id
所应该读取的条目数量。entries_read
计数器仅在理想情况下才准确,即消费者组从流的第一个条目开始并处理其所有条目(例如,处理前没有条目被删除)。
在以下两种特殊情况下,此机制无法报告延迟
在这两种情况下,组的读取计数器都被视为无效,并且返回值设置为 NULL 以表明延迟当前不可用。
然而,延迟只是暂时不可用。随着消费者持续处理消息,它会在正常操作期间自动恢复。一旦消费者组将流中的最后一条消息传递给其成员,它将设置正确的逻辑读取计数器,并且可以恢复对其延迟的跟踪。
示例
> 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
RESP2/RESP3 回复
数组回复:消费者组的列表。
历史
版本 | 更改 |
---|---|
7.0.0 | 添加了 |