*SINTERCARD 命令
返回多个 Set 的交集的 member 数量。Redis 7.0+ 引入。
*语法
SINTERCARD numkeys key [key ...] [LIMIT limit]
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| numkeys | Integer | 是 | key 的数量 |
| key | String | 是 | Set 键名 |
| LIMIT | Integer | 否 | 如果交集数量超过 limit,返回 limit |
*返回值
| 条件 | 返回值 |
|---|---|
| 有交集 | 交集数量(Integer) |
| 无交集 | 0 |
*时间复杂度
O(N*M),N 为最小集合大小,M 为集合数量。
*示例
> SADD set1 a b c d
(integer) 4
> SADD set2 b c e f
(integer) 4
> SADD set3 c d e
(integer) 3
> SINTERCARD 3 set1 set2 set3
(integer) 1 # 只有 c
> SINTERCARD 2 set1 set2
(integer) 2 # b 和 c
# 限制数量
> SINTERCARD 2 set1 set2 LIMIT 1
(integer) 1
*常见错误
- numkeys 与实际数量不匹配:返回错误。
*最佳实践
- 只关心数量:当只需要知道交集有多少元素,不需要具体元素时,用 SINTERCARD 比 SINTER 更节省内存和网络。
*FAQ
Q: SINTERCARD 和 SINTER 有什么区别? A: SINTERCARD 只返回交集数量;SINTER 返回交集元素数组。大数据量时 SINTERCARD 更节省资源。