*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: 没有硬性限制,但建议通过 XTRIM 或 XADD 的 MAXLEN 选项限制长度,防止内存无限增长。