本文内容为 http://www.redis.io/commands/lrem 的翻译、注解、例子扩充及其它修改。感谢 Redis 作者 Antirez 为开源社区作出的贡献,本文保证最新、最准、最全以表示对其的敬意。欢迎留言纠错、提示更新或支持。
LREM key count value

删除键 key 对应的列表(List)中,前 count 个元素值等于 value 的元素。

Removes the first count occurrences of elements equal to value from the list stored at key.

count 参数会按以下方式影响当前操作:

  • count> 0:从(Head)(Tail)删除元素值等于 value 的元素。
  • count< 0:从删除元素值等于 value 的元素。
  • count= 0:删除所有值等于 value 的元素。
  • count > 0: Remove elements equal to value moving from head to tail.
  • count < 0: Remove elements equal to value moving from tail to head.
  • count = 0: Remove all elements equal to value.

比如:LREM list -2 "hello" 将会删除键 list2 对应的列表中最后两处 hello

注意 不存在的键被视一个空列表,这个时候当前命令总是返回 0

Note that non-existing keys are treated like empty lists, so when key does not exist, the command will always return 0.
  • 返回删除的元素的个数。

    Integer reply: the number of removed elements.
  • redis> RPUSH mylist "hello"
    (integer) 1
    redis> RPUSH mylist "hello"
    (integer) 2
    redis> RPUSH mylist "foo"
    (integer) 3
    redis> RPUSH mylist "hello"
    (integer) 4
    redis> LREM mylist -2 "hello"
    (integer) 2
    redis> LRANGE mylist 0 -1
    1) "hello"
    2) "foo"
  • 版本支持

    1.0.0+

    时间复杂度(Time complexity)

    O(N)N 为列表的长度。

    O(N) where N is the length of the list.