- 2021-05-17更新:增加Redis 6.2新增的
LMOVE
、BLMOVE
命令。
在前文中,我们已经介绍了Redis列表相关的LPUSH
、LPOP
等命令。在本文中,我将继续介绍Redis中列表的LTRIM
、RPOPLPUSH
、BLPOP
、BRPOP
、BRPOPLPUSH
、LPOS
以及Redis 6.2新增的LMOVE
以及BLMOVE
命令。
从Redis 6.2.0开始,RPOPLPUSH
以及BRPOPLPUSH
命令将考虑被启用,请分别使用LMOVE
以及BLMOVE
替代。
LTRIM
LTRIM
命令用于对列表进行修建,即只保留指定范围内的部分元素。指定范围的偏移量start
及stop
都为以0为开始,即索引0
为列表中的第一个元素,负数值表示相对于列表队尾的位置(如-1
代表列表中最后一个元素)。例如命令LTRIM mykey 0 4
在执行后只保留列表中的前五个元素,其它元素将被删除。
LTRIM key start stop
当start
的值大于列表的长度或start
大于stop
时,结果将为一个空列表。若stop
大于列表的长度,其值将被设置为列表最后一个元素的索引值。
在Redis文档中提到了使用LTRIM
与LPUSH
或RPUSH
命令配合使用,将达到使列表长度保持在指定大小内的效果,例如执行下述命令时,将使mylist
列表的长度始终保持在100以内(包括100)。
redis> LPUSH mylist someelement
redis> LTRIM mylist 0 99
示例
redis> RPUSH mykey "value1" "value2" "value3" "value4" "value5"
(integer) 5
redis> LTRIM mykey 1 -2
OK
redis> LRANGE mykey 0 -1
1) "value2"
2) "value3"
3) "value4"
处理超出边界的情况:
redis> RPUSH mykey "value1" "value2" "value3" "value4" "value5"
(integer) 5
# stop大于列表大小
redis> LTRIM mykey 2 10
OK
redis> LRANGE mykey 0 -1
1) "value3"
2) "value4"
3) "value5"
# start与stop皆大于列表大小
redis&