• LREM key count value
    • 返回值
    • 代码示例

    LREM key count value

    可用版本: >= 1.0.0
    时间复杂度: O(N), N 为列表的长度。

    根据参数 count 的值,移除列表中与参数 value 相等的元素。

    count 的值可以是以下几种:

    • count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count

    • count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。

    • count = 0 : 移除表中所有与 value 相等的值。

    返回值

    被移除元素的数量。因为不存在的 key 被视作空表(empty list),所以当 key 不存在时, LREM 命令总是返回 0

    代码示例

    1. # 先创建一个表,内容排列是
    2. # morning hello morning helllo morning
    3.  
    4. redis> LPUSH greet "morning"
    5. (integer) 1
    6. redis> LPUSH greet "hello"
    7. (integer) 2
    8. redis> LPUSH greet "morning"
    9. (integer) 3
    10. redis> LPUSH greet "hello"
    11. (integer) 4
    12. redis> LPUSH greet "morning"
    13. (integer) 5
    14.  
    15. redis> LRANGE greet 0 4 # 查看所有元素
    16. 1) "morning"
    17. 2) "hello"
    18. 3) "morning"
    19. 4) "hello"
    20. 5) "morning"
    21.  
    22. redis> LREM greet 2 morning # 移除从表头到表尾,最先发现的两个 morning
    23. (integer) 2 # 两个元素被移除
    24.  
    25. redis> LLEN greet # 还剩 3 个元素
    26. (integer) 3
    27.  
    28. redis> LRANGE greet 0 2
    29. 1) "hello"
    30. 2) "hello"
    31. 3) "morning"
    32.  
    33. redis> LREM greet -1 morning # 移除从表尾到表头,第一个 morning
    34. (integer) 1
    35.  
    36. redis> LLEN greet # 剩下两个元素
    37. (integer) 2
    38.  
    39. redis> LRANGE greet 0 1
    40. 1) "hello"
    41. 2) "hello"
    42.  
    43. redis> LREM greet 0 hello # 移除表中所有 hello
    44. (integer) 2 # 两个 hello 被移除
    45.  
    46. redis> LLEN greet
    47. (integer) 0