Redis ZINTERSTORE命令

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

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

语法

Redis ZINTERSTORE 命令的基本语法如下:
ZINTERSTORE 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 web:fans 1000 www.baidu.com 900 www.biancheng.net 850 wwww.taobao.com #创建有序集合
(integer) 3
127.0.0.1:6379> ZADD person:fans 200 www.baidu.com 500 www.biancheng.net  #创建有序集合
(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.biancheng.net"
4) "1400"