Redis 的 LREM 命令用于根据参数 count 的值,移除 列表 中与参数 value 相等的元素。
192.168.98.70:6379> LREM KEY count value
参数 | 描述 |
---|---|
KEY | 要移除的列表的键。 |
count | 要移除的个数,见下表。 |
value | 要移除的值。 |
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,表示未成功删除元素。
从表头开始移除与 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 元素都被删除。
从表尾开始移除与 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 元素都被删除。
移除列表中所有与 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 命令用于根据参数 count 的值,移除列表中与参数 value 相等的元素。Redis LREM 命令语法:
192.168.98.70:6379> LREM KEY count value