*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"
*常见错误
- 对非 List 使用:返回 WRONGTYPE。
*最佳实践
- 固定长度队列:配合 LPUSH 使用 LTRIM 实现固定长度的队列(如最近 100 条消息)。
*FAQ
Q: LTRIM 和 LRANGE 有什么区别? A: LTRIM 修改 List,删除范围外的元素;LRANGE 只读取不修改。LTRIM 后 List 只保留范围内的元素。
Q: LTRIM 后 key 会被删除吗? | A: 如果 List 为空,key 会自动删除。