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 中添加。

为每个待处理条目提供以下信息:

  1. 消息的ID。
  2. 获取消息但尚未确认的消费者的名称。我们将其称为消息的当前 业主。对于使用 XNACK 释放回组的消息,此字段将为空字符串。
  3. 消息传递给该消费者时的 UNIX 时间戳。
  4. 该消息被发送的次数。

为每位消费者提供以下信息:

  • 姓名:消费者姓名
  • 看过的时间:上次尝试交互的 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 文档许可。