SINTERCARD

用法
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 回复

整数回复:结果交集中的元素数量。