*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

*常见错误

  1. numkeys 与实际数量不匹配:返回错误。

*最佳实践

  1. 只关心数量:当只需要知道交集有多少元素,不需要具体元素时,用 SINTERCARD 比 SINTER 更节省内存和网络。

*FAQ

Q: SINTERCARD 和 SINTER 有什么区别? A: SINTERCARD 只返回交集数量;SINTER 返回交集元素数组。大数据量时 SINTERCARD 更节省资源。