我知道rpop删除了Redis列表的最后一个元素。如何在某个范围之间弹出列表项(例如:0到100)?
我希望这是lrange + rpop的组合。
答案 0 :(得分:3)
删除第一个顶部 100元素,应该是:
lrange list 0 99
ltrim list 100 -1
删除尾部 100元素,应该是:
lrange list -1 -100
ltrim list 0 -99
ltrim descripton :
修剪列表name
,删除不在切片内的所有值
在start
和end
之间
start
和end
可以是负数
Python切片表示法
在python脚本和redis命令行中的上述工作,应该适用于其他语言的情况。
答案 1 :(得分:1)
据我所知,没有预定义命令从列表中弹出一系列项目。 您必须向redis发送一系列rpop命令。 Redis常常发送许多短命令,因此连续发送100(甚至1000)个rpop命令不是问题。 为了提高性能,您可以使用"流水线"在一次操作中发送多个命令。这样做的确切方式取决于您的驾驶员。
另一种方法是编写Lua脚本并使用eval
发送它答案 2 :(得分:0)
您需要结合使用 lrange 和 ltrim 来实现此目的。
http://redis.io/commands/ltrim
检索并删除列表中的前100个元素。
lrange list 0 100
ltrim list 0 100
答案 3 :(得分:0)
删除前100个元素,应该是:
列表0 99 列表100 -1
删除尾部前100个元素,应为:
列表-100 -1 ltrim列表0 -101
答案 4 :(得分:0)
聚会晚了一点,但是如果您想自动完成所有事情,则可以使用multi / exec命令。
127.0.0.1:6379> rpush mylist 1 2 3 4
(integer) 4
127.0.0.1:6379> lrange mylist 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
127.0.0.1:6379> multi
OK
127.0.0.1:6379> lrange mylist 0 1
QUEUED
127.0.0.1:6379> ltrim mylist 2 -1
QUEUED
127.0.0.1:6379> exec
1) 1) "1"
2) "2"
2) OK
127.0.0.1:6379> lrange mylist 0 -1
1) "3"
2) "4"