- 用法
-
SINTERCARD numkeys key [ key ... ] [ LIMIT limit ]
- 复杂度
- 在最坏情况下,复杂度为 O(N*M),其中 N 是最小集合的基数,M 是集合的数量。
- 起始版本
- 7.0.0
- ACL 类别
- @set, @read, @slow
此命令类似于 SINTER
,但它不返回结果集,而是只返回结果的基数。返回所有给定集合的交集所产生的集合的基数。
不存在的键被视为空集合。如果其中一个键为空集合,则结果集合也为空(因为集合与空集合的交集总是为空集合)。
默认情况下,此命令计算所有给定集合的交集基数。当提供了可选的 LIMIT
参数时(默认为 0,表示无限制),如果在计算过程中交集基数达到限制值,算法将立即停止并返回该限制值作为基数。这种实现方式可以显著加快查询速度,尤其是在限制值低于实际交集基数的情况下。
示例
127.0.0.1:6379> SADD key1 "a"
(integer) 1
127.0.0.1:6379> SADD key1 "b"
(integer) 1
127.0.0.1:6379> SADD key1 "c"
(integer) 1
127.0.0.1:6379> SADD key1 "d"
(integer) 1
127.0.0.1:6379> SADD key2 "c"
(integer) 1
127.0.0.1:6379> SADD key2 "d"
(integer) 1
127.0.0.1:6379> SADD key2 "e"
(integer) 1
127.0.0.1:6379> SINTER key1 key2
1) "c"
2) "d"
127.0.0.1:6379> SINTERCARD 2 key1 key2
(integer) 2
127.0.0.1:6379> SINTERCARD 2 key1 key2 LIMIT 1
(integer) 1
RESP2/RESP3 回复
整数回复:结果交集中的元素数量。