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

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

SUNION set [set ...]

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

redis> SMEMBERS s1
1) "a"
2) "b"
3) "c"
4) "d"
redis> SMEMBERS s2
1) "c"
2) "d"
3) "e"
4) "f"

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

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

从结果可以看出,s1 和 s2 的并集共包含 6 个元素。

SUNIONSTORE 命令

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

SUNIONSTORE destination_key set [set ...]

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

例如,通过执行以下命令,我们可以把 s1 和 s2 的并集计算结果存储到集合 s1-union-s2 中:

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

其它信息

  • 复杂度:SUNION 命令和 SUNIONSTORE 命令的复杂度都是 O(N),其中 N 为所有给定集合包含的元素数量总和。

  • 版本要求:SUNION 命令和 SUNIONSTORE 命令从 Redis 1.0.0 版本开始可用。