Redis ZINTERSTORE 命令用于计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination 。
注意:默认情况下,结果集中某个成员的分数值是所有给定集合中该成员的分数值之和。
Redis ZINTERSTORE 命令的基本语法如下:
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
WEIGHTS 选项用来给每个有序集合分别指定一个加权因子,每个有序集合中所有成员的 score 值在传递给聚合函数(aggregation function)之前,都要先乘以该加权因子。如果没有指定 WEIGHTS 选项,加权因子默认设置为 1 。
使用 AGGREGATE 选项,你可以指定并集的结果集的聚合方式。默认使用的参数 SUM ,可以将所有集合中某个成员的 score 值之和作为结果集中该成员的 score 值;若使用 MIN 参数,则将所有集合中某个成员的最小 score 值作为结果集中该成员的 score 值;而参数 MAX 则是将所有集合中某个成员的最大 score 值作为结果集中该成员的 score 值。
保存到 destination 的结果集的基数。
127.0.0.1:6379> ZADD web:fans 1000 www.baidu.com 900 www.cdsy.xyz 850 wwww.taobao.com #创建有序集合 (integer) 3 127.0.0.1:6379> ZADD person:fans 200 www.baidu.com 500 www.cdsy.xyz #创建有序集合 (integer) 2 127.0.0.1:6379> ZINTERSTORE fans 2 web:fans person:fans #求两个集合的交集 (integer) 2 127.0.0.1:6379> ZRANGE fans 0 -1 withscores 1) "www.baidu.com" 2) "1200" 3) "www.cdsy.xyz" 4) "1400"