首页/数据/数据库速查/LLEN 列表长度
Redis 命令96 条

LLEN 列表长度

O(1) 返回列表元素个数,键不存在返回 0;常用于队列积压监控与限长判断。

数据库速查数据更新于 2026-10-13

列表长度的常数时间读取

LLEN 返回列表的元素个数,复杂度为 O(1),键不存在时返回 0。它看起来简单,但在监控与限长场景里非常实用:采样列表长度就能判断队列积压,不需要把内容全部拉回来数。要注意列表被消费空之后键会自动消失,因此不能用「键是否存在」判断列表是否非空。

基本信息

适用平台Redis 全版本
语法LLEN key
返回值元素个数;键不存在返回 0
复杂度O(1)
副作用无;空列表键会被自动删除

典型使用场景

  • 队列积压监控:定期采样长度,超过阈值告警
  • 限长判断:写入前检查长度,超过上限则拒绝或裁剪
  • 容量评估:观察列表增长趋势,为扩容提供依据
  • 清理前确认:判断某个列表是否已经空置可以删除
  • 压测验证:确认生产与消费速率是否匹配
  • 发布前核对:确认待处理任务已清空,避免重启后重复消费

示例与监控写法

示例与监控写法
RPUSH queue:email a b c d
LLEN queue:email               # 4
LPOP queue:email
LLEN queue:email               # 3
# 空列表的键会自动删除,此时 LLEN 仍返回 0
LPOP queue:email
LLEN queue:email               # 0
EXISTS queue:email             # 0:键已不存在
# 积压监控:定期采样并告警
# watch -n 30 'redis-cli LLEN queue:email'

相关命令对照

命令作用复杂度
LLEN返回列表长度O(1),适合高频采样
LRANGE 0 -1取回全部元素O(N),会拉取全部数据
LPOS查找元素位置O(N)
LPUSH / RPUSH向两端写入O(1)
LPOP / RPOP从两端弹出O(1)
监控列表积压用 LLEN 采样即可:LRANGE 0 -1 会把全部元素拉回客户端,在长列表上是典型的自伤操作。
不要用 EXISTS 判断列表是否有数据:空列表的键已经被删除,判断非空应看 LLEN 是否大于 0。
积压监控要同时看生产与消费两侧:只盯长度会在消费线程卡死时后知后觉。常见做法是给长度设两级阈值,超过一级提醒值班,超过二级触发自动扩容或限流生产端,同时采集消费速率作为辅助判断。
列表长度与内存不是线性关系:元素本身较大或采用紧凑编码时,单条记录的内存占用差别很大。评估容量应结合 MEMORY USAGE 抽样测量,而不是只看长度乘以一个拍脑袋的系数。

易错点

  • 用 LRANGE 数长度:白白拉取全部元素,列表长时开销巨大
  • 依赖 EXISTS 判断列表非空:空列表键已删除,判断结果会与预期不符
  • 把 LLEN 当实时计数用于强一致判断:采样有间隔,中间可能有新元素写入
  • 对超长列表不设上限:积压到数百万条时内存与操作耗时都会失控

数据来源与参考

  • Redis 官方文档: LLEN

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌