在 Redis Stream 中,查看 消费者组(Consumer Groups) 和 消费者(Consumers) 的命令如下:
1. 查看 Stream 的所有消费者组
使用 XINFO GROUPS
命令列出指定 Stream 的所有消费者组:
XINFO GROUPS <stream_key>
示例:
XINFO GROUPS mystream
输出示例:
1) 1) "name" # 消费者组名称2) "mygroup"3) "consumers" # 当前活跃的消费者数量4) (integer) 25) "pending" # 未确认(PENDING)的消息数量6) (integer) 37) "last-delivered-id" # 最后投递的消息 ID8) "1630000000000-0"9) "entries-read" # 已读取的消息数(Redis 7.0+)10) (integer) 10011) "lag" # 消息积压数(未消费的消息数,Redis 7.0+)12) (integer) 5
2. 查看某个消费者组的所有消费者
使用 XINFO CONSUMERS
命令列出指定消费者组的所有消费者:
XINFO CONSUMERS <stream_key> <group_name>
示例:
XINFO CONSUMERS mystream mygroup
输出示例:
1) 1) "name" # 消费者名称2) "consumer1"3) "pending" # 该消费者未确认的消息数4) (integer) 25) "idle" # 空闲时间(毫秒,无活动时间)6) (integer) 36000
7) 1) "name"
8) 2) "consumer2"
9) 3) "pending"
10) 4) (integer) 1
11) 5) "idle"
12) 6) (integer) 1500> xinfo consumers stream1 agroup
1) 1) "name"2) "aconsumer"3) "pending"4) "0"5) "idle"6) "280750101"---
> xinfo groups stream1
1) "name"1) 2) "group_aa.mp4"2) 3) "consumers"3) 4) "1"4) 5) "pending"5) 6) "0"6) 7) "last-delivered-id"7) 8) "1743217447576-0"
2) 1) "name"1) 2) "agroup"2) 3) "consumers"3) 4) "1"4) 5) "pending"5) 6) "0"6) 7) "last-delivered-id"7) 8) "1743219769467-0"
3. 查看未确认(PENDING)的消息
如果需要检查消费者组中 未确认(ACK)的消息,使用 XPENDING
:
XPENDING <stream_key> <group_name> [<start_id> <end_id> <count> [<consumer_name>]]
示例:
# 查看 mygroup 中所有未确认的消息(前 10 条)
XPENDING mystream mygroup - + 10# 查看 consumer1 的未确认消息
XPENDING mystream mygroup - + 10 consumer1xpending stream1 agroup - + 10
(empty list or set)
输出字段:
• 消息ID
、消费者名称
、空闲时间(毫秒)
、投递次数
。
4. 其他相关命令
命令 | 作用 |
---|---|
XINFO STREAM <stream_key> | 查看 Stream 的详细信息(长度、首个/最后一个 ID 等) |
XLEN <stream_key> | 查看 Stream 的消息总数 |
XRANGE <stream_key> <start_id> <end_id> | 按范围读取消息 |
XREVRANGE <stream_key> <end_id> <start_id> | 反向范围读取 |
总结
• 查看所有消费者组:XINFO GROUPS <stream_key>
• 查看组内消费者:XINFO CONSUMERS <stream_key> <group_name>
• 查看未确认消息:XPENDING <stream_key> <group_name>
• 监控消费者状态:结合 idle
(空闲时间)和 pending
(未确认数)判断消费者健康状态。
这些命令是 管理和监控 Redis Stream 消费者组 的核心工具,尤其在需要排查消息积压或消费者故障时非常有用。