Redis Zinterstore 命令

Redis 有序集合(sorted set)

Redis Zinterstore 用于计算多个有序集合的交集,并将结果存储在新的有序集合中。

Zinterstore 命令对于需要对有序集合进行集合运算(例如计算交集)时非常有用。

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

语法

redis Zinterstore 命令基本语法如下:

ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE sum|min|max]
  • destination:结果有序集合的名称。
  • numkeys:要计算交集的有序集合的数量。
  • key:参与计算的有序集合的名称。
  • WEIGHTS weight [weight ...]:指定每个有序集合的权重。默认权重为 1。
  • AGGREGATE sum|min|max:指定交集结果的聚合方式。默认是 sum(求和)。

可用版本

>= 2.0.0

返回值

保存到目标结果集的的成员数量。

实例

# 有序集 mid_test
redis 127.0.0.1:6379> ZADD mid_test 70 "Li Lei"
(integer) 1
redis 127.0.0.1:6379> ZADD mid_test 70 "Han Meimei"
(integer) 1
redis 127.0.0.1:6379> ZADD mid_test 99.5 "Tom"
(integer) 1

# 另一个有序集 fin_test
redis 127.0.0.1:6379> ZADD fin_test 88 "Li Lei"
(integer) 1
redis 127.0.0.1:6379> ZADD fin_test 75 "Han Meimei"
(integer) 1
redis 127.0.0.1:6379> ZADD fin_test 99.5 "Tom"
(integer) 1

# 交集
redis 127.0.0.1:6379> ZINTERSTORE sum_point 2 mid_test fin_test
(integer) 3

# 显示有序集内所有成员及其分数值
redis 127.0.0.1:6379> ZRANGE sum_point 0 -1 WITHSCORES     
1) "Han Meimei"
2) "145"
3) "Li Lei"
4) "158"
5) "Tom"
6) "199"

Redis 有序集合(sorted set)