Redis 基础教程

Redis 命令

Redis 高级教程

Redis 笔记

Redis ZUNIONSTORE 命令

Redis 有序集合 Redis 有序集合


ZUNIONSTORE 命令计算给定的 numkeys 个有序集合的并集,并且把结果放到 destination 中。在给定要计算的 key 和其它参数之前,必须先给定 key 个数(numberkeys)。 默认情况下,结果集中某个成员的 score 值是所有给定集下该成员 score 值之和。

命令格式

ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]

使用 WEIGHTS 选项,你可以为每个给定的有序集指定一个乘法因子,意思就是,每个给定有序集的所有成员的 score 值在传递给聚合函数之前都要先乘以该因子。如果 WEIGHTS 没有给定,默认就是1。

使用 AGGREGATE 选项,你可以指定并集的结果集的聚合方式。默认使用的参数 SUM,可以将所有集合中某个成员的 score 值之和作为结果集中该成员的 score 值。如果使用参数 MIN 或者 MAX,结果集就是所有集合中元素最小或最大的元素。

如果 key destination 存在,就被覆盖。

可用版本:>=2.0.0

时间复杂度:O(N)+O(M*log(M)) ,N 为 有序集合的基数(成员个数)的总和, M 为结果集的基数。

命令返回值

结果有序集合 destination 中元素个数。

示例

redis> ZADD zset1 1 "one"
(integer) 1
redis> ZADD zset1 2 "two"
(integer) 1
redis> ZADD zset2 1 "one"
(integer) 1
redis> ZADD zset2 2 "two"
(integer) 1
redis> ZADD zset2 3 "three"
(integer) 1
redis> ZUNIONSTORE out 2 zset1 zset2 WEIGHTS 2 3
(integer) 3
redis> ZRANGE out 0 -1 WITHSCORES
1) "one"
2) "5"
3) "three"
4) "9"
5) "two"
6) "10"