*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 — 返回集合的成员数量