Redis ZUNIONSTORE命令 — 计算有序集的并集,并存储在指定键中

Redis ZUNIONSTORE命令计算指定的numkeykey处存储的有序集的并集,并将结果存储在destination中。 本命令强制要求在传递输入键和其他(可选)参数之前,提供输入键的数量numkey参数。

默认情况下,元素的结果分数是其在源有序集中的分数的总和。

使用WEIGHTS选项,可以为每个输入有序集指定一个乘数。 这意味着,在将每个输入有序集中的每个元素的分数传递给聚合函数之前,都要乘以该乘数。 如果未指定WEIGHTS,则乘数默认为1

使用AGGREGATE选项,可以指定如何合并到的并集结果集中。 此选项默认为SUM,表示将所有的输入元素的分数求和。 当此选项还可设置为MINMAX时,结果集取输入元素的最小或最大分数。

如果destination已经存在,它将被覆盖。

可用版本:从2.0.0开始可用
时间复杂度:O(NK)+O(Mlog(M)),N是最小的输入有序集的元素数量,K是输入有序集的数量,M是结果有序集中的元素的数量。

命令格式

ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]

示例

redis> ZADD zset1 1 "one"
(integer) 1
redis> ZADD zset1 2 "two"
(integer) 1
redis> ZADD zset2 1 "one"
(integer) 1
redis> ZADD zset2 2 "two"
(integer) 1
redis> ZADD zset2 3 "three"
(integer) 1
redis> ZUNIONSTORE out 2 zset1 zset2 WEIGHTS 2 3
(integer) 3
redis> ZRANGE out 0 -1 WITHSCORES
1) "one"
2) "5"
3) "three"
4) "9"
5) "two"
6) "10"

返回值

存储在destination中的结果有序集的元素数量。