扫码一下
查看教程更方便
Redis ZUNIONSTORE 用于计算给定的numkeys个有序集合的并集,并且把结果放到destination中。
在给定要计算的key和其它参数之前,必须先给定key个数(numkeys)。
默认情况下,结果集中某个成员的score值是所有给定集中该成员score值之和。
redis ZUNIONSTORE 命令基本语法如下:
redis 127.0.0.1:6379> ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
使用WEIGHTS选项,你可以为每个给定的有序集指定一个乘法因子,意思就是,每个给定有序集的所有成员的score值在传递给聚合函数之前都要先乘以该因子。如果WEIGHTS没有给定,默认是 1。
使用AGGREGATE选项,你可以指定并集的结果集的聚合方式。默认使用的参数SUM,可以将所有集合中某个成员的score值之和作为结果集中该成员的score值。如果使用参数MIN或者MAX,结果集就是所有集合中该元素最小或最大score。
如果destination存在,会被覆盖。
>= 2.0.0
保存到 destination 的结果集的成员数量。
redis 127.0.0.1:6379> ZADD zset1 1 "one"
(integer) 1
redis 127.0.0.1:6379> ZADD zset1 2 "two"
(integer) 1
redis 127.0.0.1:6379> ZADD zset2 1 "one"
(integer) 1
redis 127.0.0.1:6379> ZADD zset2 2 "two"
(integer) 1
redis 127.0.0.1:6379> ZADD zset2 3 "three"
(integer) 1
redis 127.0.0.1:6379> ZUNIONSTORE out 2 zset1 zset2 WEIGHTS 2 3
(integer) 3
redis 127.0.0.1:6379> ZRANGE out 0 -1 WITHSCORES
1) "one"
2) "5"
3) "three"
4) "9"
5) "two"
6) "10"
ZUNIONSTORE 命令时间复杂度: O(N)+O(M log(M)) 其中N是输入的有序集合的大小的和。M是执行之后得到的有序集合中的元素的个数。