Redis ZINTERSTORE 命令
Redis ZINTERSTORE 命令用于对多个有序集合进行交集计算,并将结果保存到新的有序集合中。
命令格式
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
参数说明
- destination:新有序集合的名称;
- numkeys:待计算有序集合的数量;
- key:待计算有序集合的名称;
- WEIGHTS weight:为每个有序集合指定一个乘法因子,用来调整权重;
- AGGREGATE:聚合方式,可以是 SUM 、 MIN 或 MAX,默认为 SUM。
使用方法
下面是一个使用示例:
127.0.0.1:6379> ZADD first 1 "A" 2 "B" 3 "C"
(integer) 3
127.0.0.1:6379> ZADD second 2 "B" 3 "C" 4 "D"
(integer) 3
127.0.0.1:6379> ZINTERSTORE result 2 first second
(integer) 2
127.0.0.1:6379> ZRANGE result 0 -1 WITHSCORES
1) "B"
2) "4"
3) "C"
4) "6"
上述示例中,先创建了两个有序集合 first
和 second
,然后调用 ZINTERSTORE
命令计算两者的交集,并将结果保存到新的有序集合 result
中。最后使用 ZRANGE
命令查看交集结果。
实例说明
1. 计算交集并指定权重因子
127.0.0.1:6379> ZADD team1 1 "Messi" 2 "Xavi" 3 "Iniesta" 4 "Pique"
(integer) 4
127.0.0.1:6379> ZADD team2 1 "Ronaldo" 2 "Benzema" 3 "Modric" 4 "Kroos"
(integer) 4
127.0.0.1:6379> ZINTERSTORE team12 2 team1 team2 WEIGHTS 1.5 1.0
(integer) 0
127.0.0.1:6379> ZRANGE team12 0 -1 WITHSCORES
1) "Benzema"
2) "3"
3) "Iniesta"
4) "4.5"
5) "Kroos"
6) "4"
7) "Modric"
8) "3"
9) "Pique"
10) "6"
11) "Ronaldo"
12) "1.5"
13) "Xavi"
14) "3"
上述实例中,首先创建了两个有序集合 team1
和 team2
,然后调用 ZINTERSTORE
命令计算两者的交集,并将结果保存到新的有序集合 team12
中,权重因子分别为 1.5 和 1.0。最后使用 ZRANGE
命令查看交集结果。
2. 计算多个有序集合的交集
127.0.0.1:6379> ZADD rank1 1 "Jack" 2 "Bob" 3 "Mary" 4 "Jenny" 5 "Lucy"
(integer) 5
127.0.0.1:6379> ZADD rank2 1 "Bob" 2 "Mary" 3 "Jenny" 4 "Lucy" 5 "Tony"
(integer) 5
127.0.0.1:6379> ZADD rank3 1 "Mary" 2 "Lucy" 3 "Tony" 4 "Lily" 5 "David"
(integer) 5
127.0.0.1:6379> ZADD rank4 1 "Jenny" 2 "Lucy" 3 "David" 4 "LiLei" 5 "HanMeiMei"
(integer) 5
127.0.0.1:6379> ZINTERSTORE result 4 rank1 rank2 rank3 rank4
(integer) 0
127.0.0.1:6379> ZRANGE result 0 -1 WITHSCORES
1) "Lucy"
2) "8"
上述实例中,首先创建了四个有序集合 rank1
、rank2
、rank3
和 rank4
,然后调用 ZINTERSTORE
命令计算它们的交集,并将结果保存到新的有序集合 result
中。最后使用 ZRANGE
命令查看交集结果。
注意事项
- 交集计算涉及多个有序集合,所以每个有序集合中的元素必须是唯一的,否则可能会计算出错误的结果。
参考资料
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Redis ZINTERSTORE命令 - Python技术站