- 用法
-
LTRIM key start stop
- 复杂度
- O(N),其中 N 是此操作将要移除的元素数量。
- 起始版本
- 1.0.0
- ACL 类别
- @list, @write, @slow
修剪现有列表,使其只包含指定范围内的元素。`start` 和 `stop` 都是从零开始的索引,其中 `0` 是列表的第一个元素(头部),`1` 是下一个元素,依此类推。
例如:`LTRIM foobar 0 2` 将修改存储在 `foobar` 的列表,使其只保留列表的前三个元素。
`start` 和 `end` 也可以是负数,表示从列表末尾开始的偏移量,其中 `-1` 是列表的最后一个元素,`-2` 是倒数第二个元素,依此类推。
超出范围的索引不会产生错误:如果 `start` 大于列表的末尾,或者 `start > end`,结果将是一个空列表(这将导致 `key` 被移除)。如果 `end` 大于列表的末尾,Valkey 将其视为列表的最后一个元素。
`LTRIM` 的一个常见用法是与 `LPUSH` / `RPUSH` 结合使用。例如
LPUSH mylist someelement
LTRIM mylist 0 99
这对命令会将新元素推入列表,同时确保列表不会增长到超过 100 个元素。这在例如使用 Valkey 存储日志时非常有用。值得注意的是,当以这种方式使用时,`LTRIM` 是一个 O(1) 操作,因为在平均情况下,只从列表的尾部移除一个元素。
示例
127.0.0.1:6379> RPUSH mylist "one"
(integer) 1
127.0.0.1:6379> RPUSH mylist "two"
(integer) 2
127.0.0.1:6379> RPUSH mylist "three"
(integer) 3
127.0.0.1:6379> LTRIM mylist 1 -1
OK
127.0.0.1:6379> LRANGE mylist 0 -1
1) "two"
2) "three"
RESP2/RESP3 回复
简单字符串回复:`OK`。