Redis ZUNIONSTORE 命令
Redis ZUNIONSTORE 命令计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination 。
( Redis >= 2.0.0 )
默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和
语法
redis ZUNIONSTORE 命令语法如下:
127.0.0.1:6379> ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
-
WEIGHTS 使用 WEIGHTS 选项,你可以为每个给定有序集分别指定一个乘法因子(multiplication factor),每个给定有序集的所有成员的 score 值在传递给聚合函数(aggregation function)之前都要先乘以该有序集的因子。
如果没有指定 WEIGHTS 选项,乘法因子默认设置为 1 。
-
AGGREGATE 使用 AGGREGATE 选项,你可以指定并集的结果集的聚合方式。
默认使用的参数 SUM ,可以将所有集合中某个成员的 score 值之 和 作为结果集中该成员的 score 值;使用参数 MIN ,可以将所有集合中某个成员的 最小 score 值作为结果集中该成员的 score 值;而参数 MAX 则是将所有集合中某个成员的 最大 score 值作为结果集中该成员的 score 值。
返回值
保存到 destination 的结果集的成员数量
范例
127.0.0.1:6379> FLUSHALL OK 127.0.0.1:6379> ZADD site 8 "twle.cn" 7 "www.twle.cn" 2 "baidu.com" 3 "qq.com" (integer) 4 127.0.0.1:6379> ZADD site_t 8 "twle.cn" 4 "tencent.com" 5 "xiaomi.com" (integer) 3 127.0.0.1:6379> ZRANGE site 0 -1 WITHSCORES 1) "baidu.com" 2) "2" 3) "qq.com" 4) "3" 5) "www.twle.cn" 6) "7" 7) "twle.cn" 8) "8" 127.0.0.1:6379> ZRANGE site_t 0 -1 WITHSCORES 1) "tencent.com" 2) "4" 3) "xiaomi.com" 4) "5" 5) "twle.cn" 6) "8" 127.0.0.1:6379> ZUNIONSTORE site_sum 2 site site_t WEIGHTS 1 3 (integer) 6 127.0.0.1:6379> ZRANGE site_sum 0 -1 WITHSCORES 1) "baidu.com" 2) "2" 3) "qq.com" 4) "3" 5) "www.twle.cn" 6) "7" 7) "tencent.com" 8) "12" 9) "xiaomi.com" 10) "15" 11) "twle.cn" 12) "32"