Redis LREM命令

Redis LREM命令教程

Redis 的 LREM 命令用于根据参数 count 的值,移除 列表 中与参数 value 相等的元素。

Redis LREM命令详解

语法

192.168.98.70:6379> LREM KEY count value

参数

参数 描述
KEY 要移除的列表的键。
count 要移除的个数,见下表。
value 要移除的值。

COUNT值

count 说明
count > 0 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。
count < 0 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。
count = 0 移除表中所有与 value 相等的值。

返回值

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

时间复杂度

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

可用版本

>= 1.0.0

案例

空列表

空列表,返回 nil

192.168.98.70:6379> EXISTS haicoder (integer) 0 192.168.98.70:6379> LREM haicoder 1 Redis (integer) 0

我们首先,使用 EXISTS 命令,判断键为 haicoder 的列表不存在。最后,我们使用 LREM 命令,删除键为 haicoder 的列表值为 Redis 的 1 个元素,返回 0,表示未成功删除元素。

COUNT > 0

从表头开始移除与 value 相等的元素,数量为 count

192.168.98.70:6379> LPUSH haicoder Redis (integer) 1 192.168.98.70:6379> LPUSH haicoder Mongo (integer) 2 192.168.98.70:6379> LPUSH haicoder Mysql (integer) 3 192.168.98.70:6379> LPUSH haicoder Redis (integer) 4 192.168.98.70:6379> LREM haicoder 2 Redis (integer) 2 192.168.98.70:6379> LRANGE haicoder 0 -1 1) "Mysql" 2) "Mongo" 192.168.98.70:6379> DEL haicoder (integer) 1

我们首先,使用 LPUSH 命令,向键为 haicoder 的列表的头部插入值 Redis。使用 LPUSH 命令,向键为 haicoder 的列表的头部插入值 Mongo。

接着,我们使用 LPUSH 命令,向键为 haicoder 的列表的头部插入值 Mysql。使用 LPUSH 命令,向键为 haicoder 的列表的头部插入值 Redis。

最后,我们使用 LREM 命令,从表头开始移除键为 haicoder 的列表值为 Redis 的 2 个元素。使用 LRANGE 命令,获取键为 haicoder 的所有元素,此时两个 Redis 元素都被删除。

COUNT < 0

从表尾开始移除与 value 相等的元素,数量为 count

192.168.98.70:6379> LPUSH haicoder Redis (integer) 1 192.168.98.70:6379> LPUSH haicoder Mongo (integer) 2 192.168.98.70:6379> LPUSH haicoder Redis (integer) 3 192.168.98.70:6379> LPUSH haicoder Mysql (integer) 4 192.168.98.70:6379> LPUSH haicoder Redis (integer) 5 192.168.98.70:6379> LPUSH haicoder Redis (integer) 6 192.168.98.70:6379> LRANGE haicoder 0 -1 1) "Redis" 2) "Redis" 3) "Mysql" 4) "Redis" 5) "Mongo" 6) "Redis" 192.168.98.70:6379> LREM haicoder -2 Redis (integer) 2 192.168.98.70:6379> LRANGE haicoder 0 -1 1) "Redis" 2) "Redis" 3) "Mysql" 4) "Mongo" 192.168.98.70:6379> DEL haicoder (integer) 1

我们首先,使用 LPUSH 命令,向键为 haicoder 的列表的头部分别插入值 Redis、Mongo、Redis 、 Mysql、Redis、 Redis。

接着,我们使用 LREM 命令,从表尾开始移除键为 haicoder 的列表值为 Redis 的 2 个元素。最后,我们使用 LRANGE 命令,获取键为 haicoder 的所有元素,此时表尾的两个 Redis 元素都被删除。

COUNT = 0

移除列表中所有与 value 相等的元素

192.168.98.70:6379> LPUSH haicoder Redis (integer) 1 192.168.98.70:6379> LPUSH haicoder Mongo (integer) 2 192.168.98.70:6379> LPUSH haicoder Redis (integer) 3 192.168.98.70:6379> LPUSH haicoder Mysql (integer) 4 192.168.98.70:6379> LPUSH haicoder Redis (integer) 5 192.168.98.70:6379> LPUSH haicoder Redis (integer) 6 192.168.98.70:6379> LRANGE haicoder 0 -1 1) "Redis" 2) "Redis" 3) "Mysql" 4) "Redis" 5) "Mongo" 6) "Redis" 192.168.98.70:6379> LREM haicoder 0 Redis (integer) 4 192.168.98.70:6379> LRANGE haicoder 0 -1 1) "Mysql" 2) "Mongo" 192.168.98.70:6379> DEL haicoder (integer) 1

我们首先,使用 LPUSH 命令,向键为 haicoder 的列表的头部分别插入值 Redis、Mongo、Redis 、 Mysql、Redis、 Redis。

接着,我们使用 LREM 命令,移除键为 haicoder 的列表值为 Redis 的所有元素。最后,我们使用 LRANGE 命令,获取键为 haicoder 的所有元素,此时所有的 Redis 元素都被删除。

Redis LREM命令总结

Redis 的 LREM 命令用于根据参数 count 的值,移除列表中与参数 value 相等的元素。Redis LREM 命令语法:

192.168.98.70:6379> LREM KEY count value