*Redis SUNIONSTORE 命令 计算并集并存储到新集合
*语法
SUNIONSTORE destination key [key ...]
*说明
将所有给定集合的并集存储到 destination 集合中。
特性:
- 如果
destination已存在,其内容会被覆盖 - 如果
destination就是其中一个源集合,该集合会被覆盖为并集结果 - 不存在的
key被视为空集合 - 返回并集结果的成员数量
用途:
- 缓存集合运算结果
- 构建聚合标签/分类集合
- 数据预处理
*返回值
- Integer:存储到
destination集合中的成员数量
*时间复杂度
- O(N),其中
N是所有给定集合的成员总数。
*版本兼容性
| Redis 版本 | 变更说明 |
|---|---|
| >= 1.0.0 | 可用 |
*示例
*示例 1:基本并集存储
redis-cli SADD set1 "a" "b" "c"
redis-cli SADD set2 "c" "d" "e"
# 将并集存储到 result
redis-cli SUNIONSTORE result set1 set2
# 返回:(integer) 5
redis-cli SMEMBERS result
*示例 2:聚合多个标签集合
redis-cli SADD tags:redis "cache" "database" "nosql"
redis-cli SADD tags:mysql "database" "sql" "relational"
redis-cli SADD tags:mongodb "database" "nosql" "document"
# 创建所有数据库相关标签的聚合集合
redis-cli SUNIONSTORE all:db:tags tags:redis tags:mysql tags:mongodb
redis-cli SCARD all:db:tags
*示例 3:原地更新集合并集
redis-cli SADD daily:active "user:001" "user:002" "user:003"
redis-cli SADD daily:active "user:004" "user:005"
# 将两个日期的活跃用户合并(覆盖 daily:active 为并集结果)
redis-cli SUNIONSTORE daily:active daily:active daily:previous
*相关命令
- SUNION — 返回集合并集(不存储)
- SINTERSTORE — 将交集存储到目标集合
- SDIFFSTORE — 将差集存储到目标集合
- SCARD — 返回集合的成员数量