*Redis LTRIM 命令

修剪 List,只保留指定范围内的元素,删除范围外的元素。


*语法

LTRIM key start stop

*参数说明

参数 类型 必填 说明
key String List 键名
start Integer 起始索引(0 开始,支持负数)
stop Integer 结束索引(支持负数)

*返回值

条件 返回值
修剪成功 OK
key 不存在 OK(视为空 List)

*时间复杂度

O(N),N 为删除的元素数量。


*示例

> RPUSH mylist a b c d e f g
(integer) 7

# 保留前 3 个
> LTRIM mylist 0 2
OK
> LRANGE mylist 0 -1
1) "a"
2) "b"
3) "c"

# 保留最后 3 个
> RPUSH mylist d e f g
(integer) 7
> LTRIM mylist -3 -1
OK
> LRANGE mylist 0 -1
1) "e"
2) "f"
3) "g"

*常见错误

  1. 对非 List 使用:返回 WRONGTYPE。

*最佳实践

  1. 固定长度队列:配合 LPUSH 使用 LTRIM 实现固定长度的队列(如最近 100 条消息)。

*FAQ

Q: LTRIM 和 LRANGE 有什么区别? A: LTRIM 修改 List,删除范围外的元素;LRANGE 只读取不修改。LTRIM 后 List 只保留范围内的元素。

Q: LTRIM 后 key 会被删除吗? | A: 如果 List 为空,key 会自动删除。