ZINTERSTORE 详解
命令计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination 。
默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和。
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
$ redis-cli -h 127.0.0.1 -p 6379 127.0.0.1:6379> zadd z1 2 cat 3 dog (integer) 2 127.0.0.1:6379> zadd z2 1 cat 4 goose (integer) 2 // 返回交集里成员的数量。新集合中成员分数值默认是给定集合下成员分数值之和 127.0.0.1:6379> ZINTERSTORE z3 2 z1 z2 (integer) 1 127.0.0.1:6379> ZRANGE z3 0 -1 withscores 1) "cat" 2) "3" // 使用权重时,也返回交集里成员的数量。默认依然是分数值相加,但是要先乘以权重值,此处即是2*1+1*2=4 127.0.0.1:6379> ZINTERSTORE z4 2 z1 z2 WEIGHTS 1 2 (integer) 1 127.0.0.1:6379> ZRANGE z4 0 -1 withscores 1) "cat" 2) "4" // AGGREGATE包含SUM/MIN/MAX。ZINTERSTORE默认使用SUM。 // MIN即为取给定集合里最小的分数值,MAX则反之 127.0.0.1:6379> ZINTERSTORE z5 2 z1 z2 AGGREGATE MIN (integer) 1 127.0.0.1:6379> ZRANGE z5 0 -1 withscores 1) "cat" 2) "1" 127.0.0.1:6379> ZINTERSTORE z6 2 z1 z2 AGGREGATE MAX (integer) 1 127.0.0.1:6379> ZRANGE z6 0 -1 withscores 1) "cat" 2) "2" //AGGREGATE和权重WEIGHTS一起使用时,取经过权重计算后的结果 //此处即2*3>1*4 127.0.0.1:6379> ZINTERSTORE z7 2 z1 z2 WEIGHTS 3 4 AGGREGATE MAX (integer) 1 127.0.0.1:6379> ZRANGE z7 0 -1 withscores 1) "cat" 2) "6"