Redis ZUNIONSTORE命令计算指定的numkey
个key
处存储的有序集的并集,并将结果存储在destination
中。 本命令强制要求在传递输入键和其他(可选)参数之前,提供输入键的数量numkey
参数。
默认情况下,元素的结果分数是其在源有序集中的分数的总和。
使用WEIGHTS
选项,可以为每个输入有序集指定一个乘数。 这意味着,在将每个输入有序集中的每个元素的分数传递给聚合函数之前,都要乘以该乘数。 如果未指定WEIGHTS
,则乘数默认为1
。
使用AGGREGATE
选项,可以指定如何合并到的并集结果集中。 此选项默认为SUM
,表示将所有的输入元素的分数求和。 当此选项还可设置为MIN
或MAX
时,结果集取输入元素的最小或最大分数。
如果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
中的结果有序集的元素数量。