LTRIM:修剪列表

LTRIM 命令接受一个列表和一个索引范围作为参数,并移除列表中位于给定索引范围之外的所有元素,只保留给定范围之内的元素:

LTRIM list start end

LTRIM 命令在执行完移除操作之后将返回 OK 作为结果。

例如,对于以下这个 alphabets 列表来说:

redis> RPUSH alphabets "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k"
(integer) 11

执行以下命令可以让列表只保留索引 0 到索引 6 范围内的 7 个元素:

redis> LTRIM alphabets 0 6
OK
redis> LRANGE alphabets 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
6) "f"
7) "g"

在此之后,我们可以继续执行以下命令,让列表只保留索引 3 到索引 5 范围内的 3 个元素:

redis> LTRIM alphabets 3 5
OK
redis> LRANGE alphabets 0 -1
1) "d"
2) "e"
3) "f"

图4-22 展示了以上两个 LTRIM 命令对 alphabets 列表进行修剪的整个过程。

image 2025 01 03 16 54 59 326
Figure 1. 图4-22 LTRIM 命令的执行过程

处理负数索引

与 LRANGE 命令一样,LTRIM 命令不仅可以处理正数索引,还可以处理负数索引。

以下代码展示了如何通过给定负数索引,让 LTRIM 命令只保留列表的最后 5 个元素:

redis> RPUSH numbers 0 1 2 3 4 5 6 7 8 9
(integer) 10
redis> LTRIM numbers -5 -1
OK
redis> LRANGE numbers 0 -1
1) "5"
2) "6"
3) "7"
4) "8"
5) "9"

其它信息

  • 复杂度:O(N),其中 N 为给定列表的长度。

  • 版本要求:LTRIM 命令从 Redis 1.0.0 版本开始可用。