SREM:从集合中移除元素

通过使用 SREM 命令,用户可以从集合中移除一个或多个已存在的元素:

SREM set element [element ...]

这个命令会返回被移除的元素数量。

以下代码展示了如何使用 SREM 命令去移除 databases 集合中的 "Neo4j" 等元素:

redis> SREM databases Neo4j
(integer) 1 -- 有1个元素被移除
redis> SREM databases "MS SQL" "Oracle" "CouchDB"
(integer) 3 -- 有3个元素被移除

图5-3展示了 databases 集合在执行 SREM 命令过程中的变化。

忽略不存在的元素

如果用户给定的元素并不存在于集合当中,那么 SREM 命令将忽略不存在的元素,只移除那些确实存在的元素。

image 2025 01 03 17 40 21 431
Figure 1. 图5-3 databases集合的整个变化过程

在以下代码中,因为元素 "Memcached" 并不存在于 databases 集合,所以 SREM 命令没有从集合中移除任何元素:

redis> SREM databases "Memcached"
(integer) 0 -- 没有元素被移除

其它信息

  • 复杂度:O(N),其中 N 为用户给定的元素数量。

  • 版本要求:SREM 命令从 Redis 1.0.0 版本开始可用,但是只有 Redis 2.4 或以上版本的 SREM 命令可以一次删除多个元素,Redis 2.4 以下版本的 SREM 命令每次只能删除一个元素。