Redis zinterstore 命令用于计算多个集合的交集,其中默认情况下,分数为每个元素的分数之和,并将结果存储在指定key中。
语法:
zinterstore key increment member
可用版本
>=2.0.0.
返回值
整数,结果排序集中的元素个数。
返回值类型
整数
示例1:Redis zinterstore
127.0.0.1:6379> zadd srcset1 5 M 6 N 7 O
(integer) 3
127.0.0.1:6379> zadd srcset2 3 N 2 O 4 P
(integer) 3
127.0.0.1:6379> zinterstore desset 2 srcset1 srcset2
(integer) 2
127.0.0.1:6379> zrange desset 0 -1
1) "N"
2) "O"
127.0.0.1:6379> zrange desset 0 -1 WITHSCORES
1) "N"
2) "9"
3) "O"
4) "9"
交集中,第一个集合的N=6,第二集合的N=3,所以交集的N=6+3=9
示例2:Redis zinterstore :使用权重
127.0.0.1:6379> zadd srcset1 5 M 6 N 7 O
(integer) 3
127.0.0.1:6379> zadd srcset2 3 N 2 O 4 P
(integer) 3
127.0.0.1:6379> zinterstore desset 2 srcset1 srcset2 WEIGHTS 2 3
(integer) 2
127.0.0.1:6379> zrange desset 0 -1 WITHSCORES
1) "O"
2) "20"
3) "N"
4) "21"
上面的例子中有权重,其中第一个集合的权重是2,第二个权重是3,第一个集合中的N=6,第二个集合中的N=3
那么交集中的N= 6*2+3*3=21
示例3:Redis zinterstore :使用聚合函数
127.0.0.1:6379> zadd srcset1 5 M 6 N 7 O
(integer) 3
127.0.0.1:6379> zadd srcset2 3 N 2 O 4 P
(integer) 3
127.0.0.1:6379> zinterstore desset 2 srcset1 srcset2 AGGREGATE MIN
(integer) 2
127.0.0.1:6379> zrange desset 0 -1 WITHSCORES
1) "O"
2) "2"
3) "N"
4) "3"
127.0.0.1:6379> zinterstore desset 2 srcset1 srcset2 AGGREGATE MAX
(integer) 2
127.0.0.1:6379> zrange desset 0 -1 WITHSCORES
1) "N"
2) "6"
3) "O"
4) "7"
示例4:Redis zinterstore :三组求交集
127.0.0.1:6379> zadd srcset1 5 M 6 N 7 O
(integer) 3
127.0.0.1:6379> zadd srcset2 3 N 2 O 4 P
(integer) 3
127.0.0.1:6379> zadd srcset3 1 O 2 P 3 Q
(integer) 3
127.0.0.1:6379> zinterstore desset 3 srcset1 srcset2 srcset3
(integer) 1
127.0.0.1:6379> zrange desset 0 -1 WITHSCORES
1) "O"
2) "10"