ZUNIONSTORE
将多个已有序集合合的并集存储在一个键中。
语法
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE ]
引入版本:2.0.0
复杂度摘要:O(N)
[!NOTE] 此命令的行为在集群 Redis 环境中有所不同。请参阅 多键操作 页面了解更多信息。
计算由指定键给出的 numkeys 有序集合的并集,并将结果存储在 destination 中。在传递输入键和其他(可选)参数之前,必须提供输入键的数量 (numkeys)。
默认情况下,元素的结果分数是其所在有序集合中的分数之和。
使用 WEIGHTS 选项,可以为每个输入有序集合指定乘法因子。在聚合之前,每个元素的分数乘以相应的权重。当未给出 WEIGHTS 时,乘法因子默认为 1。
使用 AGGREGATE 选项,可以指定如何聚合联合结果。此选项默认为 SUM,其中元素的分数在其存在的输入中求和。当此选项设置为 MIN 或 MAX 时,结果集将包含元素存在的输入中的最小或最大分数。对于 SUM、MIN 和 MAX,每个元素的分数在聚合之前会乘以其相应的权重。
当指定AGGREGATE COUNT 时,原始元素分数将被完全忽略。每个元素的结果分数由包含该元素的输入集决定,可以选择按 WEIGHTS 缩放:
- 如果没有
WEIGHTS,包含该元素的每个输入集都会将1贡献给其分数 — 有效地计算集成员资格。 - 使用
WEIGHTS,包含该元素的每个输入集贡献其相应的权重,因此分数成为这些权重的总和。
这实现了一个常见的用例:直接在命令级别计算集合成员资格频率,无需应用程序端解决方法。
如果 destination 已存在,则将其覆盖。
必需参数
destination
存储结果有序集合的键。
numkeys
后面的键的数量。
key [key ...]
一个或多个要并集的有序集合键。
可选参数
WEIGHTS weight [weight ...]
每个输入集的乘法因子;在聚合之前,每组的分数乘以其权重。每组默认为 1。
AGGREGATE SUM | MIN | MAX | COUNT
如何合并多个集合中存在的成员的分数:SUM(默认)、MIN、MAX 或 COUNT。
示例
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"
Redis Software 与 Redis Cloud 兼容性
| Redis 软件 |
Redis Cloud |
说明 |
|---|---|---|
| ✅ 标准 |
✅ 标准 |
返回值
RESP2
整数回复:结果有序集合中的元素数量。
RESP3
整数回复:结果有序集合中的元素数量。
资料来源:Redis 官方 ZUNIONSTORE 文档;中文内容参考 Redis 文档许可。