SUNION、SUNIONSTORE:对集合执行并集计算

SUNION 命令可以计算出用户给定的所有集合的并集,然后返回这个并集包含的所有元素:

  1. SUNION set [set ...]

比如对于以下这两个集合来说:

  1. redis> SMEMBERS s1
  2. 1) "a"
  3. 2) "b"
  4. 3) "c"
  5. 4) "d"
  6.  
  7. redis> SMEMBERS s2
  8. 1) "c"
  9. 2) "d"
  10. 3) "e"
  11. 4) "f"

我们可以通过执行以下命令,计算出这两个集合的并集:

  1. redis> SUNION s1 s2
  2. 1) "a"
  3. 2) "b"
  4. 3) "c"
  5. 4) "d"
  6. 5) "e"
  7. 6) "f"

从结果可以看出,s1s2 的并集共包含六个元素。

SUNIONSTORE 命令

SINTERSTORE 命令类似,Redis 也为 SUNION 提供了相应的 SUNIONSTORE 命令,这个命令可以把给定集合的并集计算结果储存到指定的键里面,并在键已经存在的情况下,自动覆盖已有的键:

  1. SUNIONSTORE destination_key set [set ...]

SUNIONSTORE 命令在执行完毕之后,将返回并集元素的数量作为返回值。

比如说,通过执行以下命令,我们可以把 s1s2 的并集计算结果储存到集合 s1-union-s2 里面:

  1. redis> SUNIONSTORE s1-union-s2 s1 s2
  2. (integer) 6 -- 并集共包含六个元素
  3.  
  4. redis> SMEMBERS s1-union-s2
  5. 1) "a"
  6. 2) "b"
  7. 3) "c"
  8. 4) "d"
  9. 5) "e"
  10. 6) "f"

其他信息

属性
复杂度SUNION 命令和 SUNIONSTORE 命令的复杂度都是 O(N) ,其中 N 为所有给定集合包含的元素数量总和。
版本要求SUNION 命令和 SUNIONSTORE 命令从 Redis 1.0.0 版本开始可用。