Redis ZUNIONSTORE命令

 
Redis ZUNIONSTORE 命令用于计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination 目标集合 。

注意:默认情况下,结果集中某个成员的分数值是所有给定集合中该成员的分数值之和。

语法

Redis ZUNIONSTORE 命令的基本语法如下:
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] 

WEIGHTS

WEIGHTS 选项用来给每个有序集合分别指定一个加权因子,每个有序集合中所有成员的 score 值在传递给聚合函数(aggregation function)之前,都要先乘以该加权因子。如果没有指定 WEIGHTS 选项,加权因子默认设置为 1 。

AGGREGATE

使用 AGGREGATE 选项,你可以指定并集的结果集的聚合方式。默认使用的参数 SUM ,可以将所有集合中某个成员的 score 值之和作为结果集中该成员的 score 值;使用 MIN 参数,可以将所有集合中某个成员的最小 score 值作为结果集中该成员的 score 值;而参数 MAX 则是将所有集合中某个成员的最大 score 值作为结果集中该成员的 score 值。

返回值

保存到 destination 的结果集的成员数量。

命令演示

127.0.0.1:6379> ZADD salary 3000 jack 3500 helen 2880 john 4000 simith 6000 ros #添加元素
(integer) 5
127.0.0.1:6379> ZADD salary1 1000 BaoAn 2000 ChuShi 1500 BaoJie
(integer) 3
#给salary1有序集合中所有成员工资翻倍。并将结果保存至salary2
127.0.0.1:6379> ZUNIONSTORE salary2 2 salary salary1 WEIGHTS 1 2 
(integer) 8
127.0.0.1:6379> ZRANGE salary2 0 -1 withscores #查看所有元素
1) "BaoAn"
2) "2000"
3) "john"
4) "2880"
5) "BaoJie"
6) "3000"
7) "jack"
8) "3000"
9) "helen"
10) "3500"
11) "ChuShi"
12) "4000"
13) "simith"
14) "4000"
15) "ros"
16) "6000"