命令介绍
Sets 族命令用于操作无序、不重复的字符串集合,适用于标签系统、好友关系的共同好友查询、去重、抽奖池等需要快速判断成员归属与执行集合间运算的场景。其核心命令按功能可分为以下四类:
成员增删与查询
SADD:向集合添加一个或多个成员。
SREM:删除指定成员。
SISMEMBER / SMISMEMBER:检查单个或多个成员是否存在。
SMEMBERS:返回集合所有成员。
SCARD:返回集合基数(成员总数)。
SSCAN:以游标方式增量迭代大集合。
随机操作
SRANDMEMBER:随机返回一个或多个成员(不移除)。
SPOP:随机弹出一个或多个成员(移除),适用于抽奖池场景。
集合间运算
SINTER / SUNION / SDIFF:分别执行交集、并集、差集运算。
SINTERSTORE / SUNIONSTORE / SDIFFSTORE:将运算结果存入新键。
SMOVE:将成员从一个集合移动到另一个集合。
高版本增强命令(Redis 7.0+ / Valkey 8.0+)
SINTERCARD:在不返回完整结果的情况下快速统计交集基数,适用于只需知道交集大小而无需获取全部成员的场景。
命令支持概览
基础命令:
sadd、scard、sdiff、sdiffstore、sinter、sinterstore、sismember、smembers、smove、spop、srandmember、srem、sscan、sunion、sunionstore,Redis 2.8 标准架构及 4.0、5.0、6.2、7.0 版本、Valkey 8.0、9.0 的标准架构与集群架构均支持。smismember 命令:仅 Redis 6.2、7.0 版本及 Valkey 8.0、9.0 版本支持。sintercard 命令:仅 Redis 7.0 版本及 Valkey 8.0、9.0 版本支持。跨 Slot 限制:集群架构下,
sdiff、sdiffstore、sinter、sinterstore、smove、sunion、sunionstore 不支持跨 Slot 操作。命令兼容性矩阵
Sets 族命令在各版本与架构下的支持情况如下表所示(✓ 表示支持,✗ 表示不支持,— 表示该命令不存在跨 Slot 访问场景)。
命令 | Valkey 9.0标准架构 | Valkey 9.0集群架构 | Redis 7.0/Valkey 8.0标准架构 | Redis 7.0/Valkey 8.0集群架构 | Redis 6.2标准架构 | Redis 6.2集群架构 | Redis 5.0标准架构 | Redis 5.0集群架构 | Redis 4.0标准架构 | Redis 4.0集群架构 | Redis 2.8标准架构 | 集群架构跨 Slot 支持 |
sadd | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
scard | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
sdiff | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ |
sdiffstore | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ |
sinter | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ |
sinterstore | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ |
sismember | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
smembers | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
smove | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ |
spop | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
srandmember | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
srem | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
sscan | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
sunion | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ |
sunionstore | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ |
smismember | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
sintercard | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | — |