Redis LTRIM命令

Redis LTRIM命令教程

Redis 的 LTRIM 命令用于对一个 列表 进行修剪,就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。

下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。

也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。当 KEY 不是列表类型时,返回一个错误。

Redis LTRIM命令详解

语法

192.168.98.70:6379> LTRIM KEY start stop

参数

参数 描述
KEY 要移除的列表的键。
start 要移除的元素的开始索引。
stop 要移除的元素的结束索引。

返回值

命令执行成功时,返回 ok 。

时间复杂度

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

可用版本

>= 1.0.0

超出范围的下标

超出范围的下标值不会引起错误。

如果 start 下标比列表的最大下标 end ( LLEN list 减去 1 )还要大,或者 start > stop , LTRIM 返回一个空列表(因为 LTRIM 已经将整个列表清空)。

如果 stop 下标比 end 下标还要大,Redis 将 stop 的值设置为 end 。

案例

索引在范围内

剩下索引内元素

192.168.98.70:6379> LPUSH haicoder Redis (integer) 1 192.168.98.70:6379> LPUSH haicoder Mongo (integer) 2 192.168.98.70:6379> LPUSH haicoder Mysql (integer) 3 192.168.98.70:6379> LPUSH haicoder SqlServer (integer) 4 192.168.98.70:6379> LTRIM haicoder 1 2 OK 192.168.98.70:6379> LRANGE haicoder 0 -1 1) "Mysql" 2) "Mongo" 192.168.98.70:6379> DEL haicoder (integer) 1

我们首先,使用 LPUSH 命令,向键为 haicoder 的列表的头部分别插入值 Redis、Mongo、 Mysql、SqlServer。最后,我们使用 LTRIM 命令,对键为 haicoder 的列表进行裁剪,只留下索引为 1 和 2 的元素。

stop 大于长度

stop 被截取为列表最大下标

192.168.98.70:6379> LPUSH haicoder Redis Mongo Mysql SqlServer (integer) 4 192.168.98.70:6379> LTRIM haicoder 1 1000 OK 192.168.98.70:6379> LRANGE haicoder 0 -1 1) "Mysql" 2) "Mongo" 3) "Redis" 192.168.98.70:6379> DEL haicoder (integer) 1

我们首先,使用 LPUSH 命令,向键为 haicoder 的列表的头部分别插入值 Redis、Mongo、 Mysql、SqlServer。

最后,我们使用 LTRIM 命令,对键为 haicoder 的列表进行裁剪,留下索引为 1 和 1000 的元素,索引 1000 大于列表最大索引,所以被截取。

索引比最大下标大

start 和 stop 都比最大索引大,且 start 小于 stop,列表被清空

192.168.98.70:6379> LPUSH haicoder Redis Mongo Mysql SqlServer (integer) 4 192.168.98.70:6379> LTRIM haicoder 100 1000 OK 192.168.98.70:6379> LRANGE haicoder 0 -1 (empty list or set)

我们首先,使用 LPUSH 命令,向键为 haicoder 的列表的头部分别插入值 Redis、Mongo、 Mysql、SqlServer。

接着,我们使用 LTRIM 命令,对键为 haicoder 的列表进行裁剪,此时 start 索引和 stop 索引都比列表的最大索引大。

最后,我们使用 LRANGE 命令获取列表 haicoder 的所有元素,列表为空,即列表被清空了。

start索引大于stop索引

start 索引大于 stop 索引,列表被清空

192.168.98.70:6379> LPUSH haicoder Redis Mongo Mysql SqlServer (integer) 4 192.168.98.70:6379> LTRIM haicoder 1000 100 OK 192.168.98.70:6379> LRANGE haicoder 0 -1 (empty list or set)

我们首先,使用 LPUSH 命令,向键为 haicoder 的列表的头部分别插入值 Redis、Mongo、 Mysql、SqlServer。

接着,我们使用 LTRIM 命令,对键为 haicoder 的列表进行裁剪,此时 start 索引和 stop 索引都比列表的最大索引大,且 start 索引大于 stop 索引。

最后,我们使用 LRANGE 命令获取列表 haicoder 的所有元素,列表为空,即列表被清空了。

Redis LTRIM命令教程

Redis 的 LTRIM 命令用于对一个列表进行修剪,就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。Redis LTRIM 命令语法:

192.168.98.70:6379> LTRIM KEY start stop