SREM:从集合中移除元素

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

  1. SREM set element [element ...]

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

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

  1. redis> SREM databases Neo4j
  2. (integer) 1 -- 有一个元素被移除
  3.  
  4. redis> SREM databases "MS SQL" "Oracle" "CouchDB"
  5. (integer) 3 -- 有三个元素被移除

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


图 5-3 databases 集合的整个变化过程

执行 SREM 命令之前_images/IMAGE_SREM_1.png执行 SREM databases "Neo4j" 之后_images/IMAGE_SREM_2.png执行 SREM databases "MS SQL" "Oracle" "CouchDB" 之后_images/IMAGE_SREM_3.png

忽略不存在的元素

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

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

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

其他信息

属性
复杂度O(N),其中 N 为用户给定的元素数量。
版本要求SREM 命令从 Redis 1.0.0 版本开始可用,但是只有 Redis 2.4 或以上版本的 SREM 命令可以一次删除多个元素,Redis 2.4 以下版本的 SREM 命令每次只能删除一个元素。