Redis基础教程-数据类型list命令之ltrim与lrem的基本用法

lrem 从存储在key处的列表中删除与element相同的元素的第一个出现次数。参数count对操作的影响如下:
count > 0: 删除从头移动到尾的与元素相同的元素。
count < 0: 删除从尾部移动到头部的等于元素的元素。
count = 0: 删除所有与元素相同的元素。
例如,LREM list -2 “hello “将删除存储在list中的 “hello “的最后两次出现。
需要注意的是,不存在的键被当作空列表处理,所以当键不存在时,命令总是返回0。

lrem的格式为 lrem key count value我们创建lrem的list,并写入a,b,c,d,e五个值

127.0.0.1:6379> lpush lrem a b c d e
 (integer) 5
 127.0.0.1:6379> lrange lrem 0 -1
 1) "e"
 2) "d"
 3) "c"
 4) "b"
 5) "a"

我们来删除元素a

127.0.0.1:6379> lrem lrem 1 a
 (integer) 1
 127.0.0.1:6379> lrange lrem 0 -1
 1) "e"
 2) "d"
 3) "c"
 4) "b"

我们发现元素a已经删除,目前b,c,d,e都只有一个,如果我们要删除两个元素b,看看结果是什么

127.0.0.1:6379> lrem lrem 2 b
 (integer) 1
 127.0.0.1:6379> lrange lrem 0 -1
 1) "e"
 2) "d"
 3) "c"

是没有报错的,可以正常删除,现在我们再push b,c,d,e,b,d,d,e

127.0.0.1:6379> lpush lrem b c d e b d d e
 (integer) 11
 127.0.0.1:6379> lrange lrem 0 -1
  1) "e"
  2) "d"
  3) "d"
  4) "b"
  5) "e"
  6) "d"
  7) "c"
  8) "b"
  9) "e"
 10) "d"
 11) "c"

目前lrem这个list中有2个b,2个c,4个d,3个e,我们正向删除2个d,负向删除2个e

127.0.0.1:6379> lrem lrem 2 d
 (integer) 2
 127.0.0.1:6379> lrange lrem 0 -1
 1) "e"
 2) "b"
 3) "e"
 4) "d"
 5) "c"
 6) "b"
 7) "e"
 8) "d"
 9) "c"

比对下发现2,3位置的d删除了

127.0.0.1:6379> lrem lrem -2 e
 (integer) 2
 127.0.0.1:6379> lrange lrem 0 -1
 1) "e"
 2) "b"
 3) "d"
 4) "c"
 5) "b"
 6) "d"
 7) "c"

可以看到3,7的e被删除了

关于redis的list类型的方法4.0有这么多,6.0开始多加了一些方法,大家有兴趣的可以自己去学习下

发表评论

邮箱地址不会被公开。 必填项已用*标注