我有一张redis列表
a, b, c ,d ,e ,f g, h
在我对函数的回调中,我得到了元素的索引,我想删除该索引。
LPOP和RPOP对我不起作用。如何在redis中删除基于索引而不是值的元素?
感谢
答案 0 :(得分:1)
Redis列表只是一个双链表,它不应该这样做。有关此here的讨论: “列表中的元素不能被索引指向,因为当列表更改时索引会失效。”
如果需要通过索引删除,并且元素是唯一的,则可以使用LINDEX + LREM执行此操作。
假设您要删除索引3:
> LINDEX list 3
"d"
> LREM list 1 d
1
另一个不错的解决方案应该是使用特殊字符串来标记已删除的条目,然后运行LREM:
> LSET list 2 DELETE
OK
> LSET list 4 DELETE
OK
> LREM list 0 DELETE
2