*Redis XLEN 命令

XLEN 返回指定 Stream 中的条目数量。


*语法

XLEN key

*参数说明

参数 类型 必填 说明
key String Stream 键名

*返回值

  • Integer:Stream 中的条目数量
  • 0:Stream 不存在或为空

*时间复杂度

O(1)

*

*示例

*基本用法

> XLEN mystream
(integer) 0
> XADD mystream * field1 value1
"1638125130000-0"
> XLEN mystream
(integer) 1
> XADD mystream * field2 value2
"1638125140000-0"
> XLEN mystream
(integer) 2

*不存在的 Stream

> XLEN notexist
(integer) 0

*结合 XTRIM 查看效果

> XLEN mystream
(integer) 100
> XTRIM mystream MAXLEN 50
(integer) 50
> XLEN mystream
(integer) 50

*常见错误

错误 原因 解决
WRONGTYPE Operation against a key holding the wrong kind of value key 不是 Stream 类型 确认 key 类型

*最佳实践

  • 监控 Stream 长度,防止无限增长导致内存耗尽
  • 定期巡检 XLEN,配合 XTRIM 或 MAXLEN 策略限制 Stream 大小
  • 在消费端监控生产速率与消费速率的差值(通过 XLEN 变化趋势)

*FAQ

Q1: XLEN 返回 0 和 key 不存在的区别? A: XLEN 返回 0 时,key 可能不存在,也可能存在但为空 Stream。两者返回结果相同。

Q2: XLEN 和 XINFO STREAM 中的 length 有什么区别? A: 没有区别,XINFO STREAM 中的 length 字段就是 XLEN 返回的值。

Q3: Stream 有最大长度限制吗? A: 没有硬性限制,但建议通过 XTRIMXADD 的 MAXLEN 选项限制长度,防止内存无限增长。