LPOP或在redis列表中删除

时间:2015-10-09 23:05:51

标签: redis

我有一张redis列表

a, b, c ,d ,e ,f g, h

在我对函数的回调中,我得到了元素的索引,我想删除该索引。

LPOP和RPOP对我不起作用。如何在redis中删除基于索引而不是值的元素?

感谢

1 个答案:

答案 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