XINFO STREAM
返回有关流的信息。
语法
XINFO STREAM key [FULL [COUNT count]]
引入版本:5.0.0
复杂度摘要:O(1)
该命令返回有关存储在 key 的流的信息。
该命令提供的详细信息是:
- 长度:流中的条目数(参见
XLEN) - 基数树键:底层基数数据结构中键的数量
- 基数树节点:底层基数数据结构中的节点数
- 团体:为流定义的消费者组数量
- 最后生成的 id:最近添加到流中的条目的 ID
- 最大删除条目 ID:从流中删除的最大条目ID
- 新增条目:在其生命周期内添加到流的所有条目的计数
- 第一次进入:流中第一个条目的 ID 和字段值元组
- 最后一项:流中最后一个条目的 ID 和字段值元组
必需参数
key
流键。
可选参数
FULL
返回完整的流状态,包括所有条目和详细的 PEL 信息,而不是摘要。
COUNT count
对于 FULL,要返回的条目数。 0 返回所有条目;默认值为 10。
示例
使用 IDMP 设置流:
> XADD mystream * message apple
"1638125133432-0"
> XADD mystream * message banana
"1638125141232-0"
> XCFGSET mystream DURATION 100 MAXSIZE 100
OK
> XADD mystream IDMP producer1 msg1 * field value
"1638125150000-0"
默认回复(配置了IDMP):
> XINFO STREAM mystream
1) "length"
2) (integer) 2
3) "radix-tree-keys"
4) (integer) 1
5) "radix-tree-nodes"
6) (integer) 2
7) "last-generated-id"
8) "1638125141232-0"
9) "max-deleted-entry-id"
10) "0-0"
11) "entries-added"
12) (integer) 2
13) "recorded-first-entry-id"
14) "1719505260513-0"
15) "idmp-duration"
16) (integer) 100
17) "idmp-maxsize"
18) (integer) 100
19) "pids-tracked"
20) (integer) 1
21) "iids-tracked"
22) (integer) 1
23) "iids-added"
24) (integer) 1
25) "iids-duplicates"
26) (integer) 0
27) "groups"
28) (integer) 1
29) "first-entry"
30) 1) "1638125133432-0"
2) 1) "message"
2) "apple"
31) "last-entry"
32) 1) "1638125141232-0"
2) 1) "message"
2) "banana"
完整回复:
> XADD mystream * foo bar
"1638125133432-0"
> XADD mystream * foo bar2
"1638125141232-0"
> XGROUP CREATE mystream mygroup 0-0
OK
> XREADGROUP GROUP mygroup Alice COUNT 1 STREAMS mystream >
1) 1) "mystream"
2) 1) 1) "1638125133432-0"
2) 1) "foo"
2) "bar"
> XINFO STREAM mystream FULL
1) "length"
2) (integer) 2
3) "radix-tree-keys"
4) (integer) 1
5) "radix-tree-nodes"
6) (integer) 2
7) "last-generated-id"
8) "1638125141232-0"
9) "max-deleted-entry-id"
10) "0-0"
11) "entries-added"
12) (integer) 2
13) "recorded-first-entry-id"
14) "1719505260513-0"
15) "entries"
16) 1) 1) "1638125133432-0"
2) 1) "foo"
2) "bar"
2) 1) "1638125141232-0"
2) 1) "foo"
2) "bar2"
17) "groups"
18) 1) 1) "name"
2) "mygroup"
3) "last-delivered-id"
4) "1638125133432-0"
5) "entries-read"
6) (integer) 1
7) "lag"
8) (integer) 1
9) "pel-count"
10) (integer) 1
11) "pending"
12) 1) 1) "1638125133432-0"
2) "Alice"
3) (integer) 1638125153423
4) (integer) 1
13) "consumers"
14) 1) 1) "name"
2) "Alice"
3) "seen-time"
4) (integer) 1638125133422
5) "active-time"
6) (integer) 1638125133432
7) "pel-count"
8) (integer) 1
9) "pending"
10) 1) 1) "1638125133432-0"
2) (integer) 1638125133432
3) (integer) 1
详细说明
IDMP(幂等消息处理)字段
当使用 XCFGSET 为流配置 IDMP 时,将包含以下附加字段:
- idmp-持续时间:幂等 ID 在流的 IDMP 映射中保留的持续时间(以秒为单位)
- idmp-最大大小:流的IDMP映射中为每个生产者保留的幂等ID的最大数量
- pid跟踪:当前正在跟踪的唯一生产者ID的数量
- iids追踪:当前所有生产者存储的幂等ID总数
- 添加了iids:在流的生命周期内添加到流中的幂等 ID 的总数
- iids-重复项:IDMP 检测到并阻止的重复消息总数
FULL 修饰符
可选的 FULL 修饰符提供更详细的回复。如果提供,FULL 回复将包含一个 条目 数组,该数组由按升序排列的流条目(ID 和字段值元组)组成。此外,团体也是一个数组,对于每个消费者组来说,它由XINFO GROUPS和XINFO CONSUMERS报告的信息组成。
为每一组提供以下信息:
- 姓名:消费者组名称
- 最后交付 ID:最后交付给该组消费者的条目的ID
- 条目读取:交付给组消费者的最后一个条目的逻辑“读取计数器”
- 滞后:流中仍在等待传递给组消费者的条目数,如果无法确定该数字,则为 NULL。
- 像素计数:组待处理条目列表(PEL)的长度,这些消息是已发送但尚未确认的消息
- 待定:包含待处理条目信息的数组(见下文)
- 消费者:包含消费者信息的数组(见下文)
- 裸计数:当前在 PEL 的 NACKed 部分中的条目数。有关更多详细信息,请参阅
XNACK命令页。 Redis 8.8 中添加。
为每个待处理条目提供以下信息:
- 消息的ID。
- 获取消息但尚未确认的消费者的名称。我们将其称为消息的当前 业主。对于使用
XNACK释放回组的消息,此字段将为空字符串。 - 消息传递给该消费者时的 UNIX 时间戳。
- 该消息被发送的次数。
为每位消费者提供以下信息:
- 姓名:消费者姓名
- 看过的时间:上次尝试交互的 UNIX 时间戳(示例:
XREADGROUP、XCLAIM、XAUTOCLAIM) - 活跃时间:上次成功交互的 UNIX 时间戳(示例:实际将某些条目读入 PEL 的
XREADGROUP、实际声明某些条目的XCLAIM/XAUTOCLAIM) - 像素计数:PEL中的条目数:消费者的待处理消息,即已发送但尚未确认的消息
- 待定:具有待处理条目信息的数组,具有与上述相同的结构,除了省略了消费者名称(多余的,因为无论如何我们都处于特定的消费者上下文中)
注意,在Redis 7.2.0之前,看过的时间用来表示最后一次成功的交互。在 7.2.0 中,添加了 活跃时间,并更改了 看过的时间 以表示最后一次尝试的交互。
COUNT 选项可用于限制返回的流和 PEL 条目的数量(返回第一个 count 条目)。默认 COUNT 为 10,COUNT 为 0 表示将返回所有条目(如果流有很多条目,执行时间可能会很长)。
Redis Software 与 Redis Cloud 兼容性
| Redis 软件 |
Redis Cloud |
说明 |
|---|---|---|
| ✅ 标准 |
✅ 标准 |
返回值
RESP2
以下之一: * 数组回复:当使用 FULL 参数时,以摘要形式显示有关流的信息列表。 * 数组回复:当使用 FULL 参数时,有关扩展形式的流的信息列表。
RESP3
以下之一: * 地图回复:当未给出 FULL 参数时,以摘要形式显示有关流的信息列表。 * 地图回复:当给出 FULL 参数时,有关扩展形式的流的信息列表。
资料来源:Redis 官方 XINFO STREAM 文档;中文内容参考 Redis 文档许可。