【问题标题】:LPOP or delete in redis list在 redis 列表中 LPOP 或删除
【发布时间】:2015-10-10 09:48:37
【问题描述】:

我有一个redis列表

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

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

LPOP 和 RPOP 不适合我。如何根据索引而不是redis中的值删除元素?

谢谢

【问题讨论】:

    标签: redis


    【解决方案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
    

    【讨论】:

    • 不是 ordo 1. 如此奇怪,您可以按索引访问但不能按索引删除。为什么?需要寻找价值。此外,您不能对列表说从某个索引开始删除一个值。它的头部或尾部意味着您不能确定要删除相同的索引。
    猜你喜欢
    • 1970-01-01
    • 2022-01-21
    • 2020-06-21
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 2022-01-02
    • 2012-04-07
    • 2016-10-16
    相关资源
    最近更新 更多