LTRIM:修剪列表

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

  1. LTRIM list start end

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

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

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

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

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

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

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

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


图 4-22 LTRIM 命令的执行过程_images/IMAGE_LTRIM.jpeg

处理负数索引

LRANGE 命令一样,LTRIM 命令不仅可以接受正数索引,还可以接受负数索引。

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

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

其他信息

属性
复杂度O(N) ,其中 N 为给定列表的长度。
版本要求LTRIM 命令从 Redis 1.0.0 版本开始可用。