- 用法
-
ZINTERCARD numkeys key [ key ... ] [ LIMIT limit ]
- 复杂度
- 最坏情况为 O(N*K),其中 N 是最小的输入有序集合,K 是输入有序集合的数量。
- 起始版本
- 7.0.0
- ACL 类别
- @sortedset, @read, @slow
此命令类似于 ZINTER
,但它不返回结果集,而是仅返回结果的基数。
不存在的键被视为空集。如果其中一个键为空集,则结果集也为空(因为与空集求交集总是得到空集)。
默认情况下,此命令计算所有给定集合交集的基数。如果提供了可选的 LIMIT
参数(默认为 0,表示无限制),并且在计算过程中交集基数达到了限制值,算法将提前退出并返回该限制值作为基数。这种实现方式确保当限制值低于实际交集基数时,查询能够显著加速。
示例
127.0.0.1:6379> ZADD zset1 1 "one"
(integer) 1
127.0.0.1:6379> ZADD zset1 2 "two"
(integer) 1
127.0.0.1:6379> ZADD zset2 1 "one"
(integer) 1
127.0.0.1:6379> ZADD zset2 2 "two"
(integer) 1
127.0.0.1:6379> ZADD zset2 3 "three"
(integer) 1
127.0.0.1:6379> ZINTER 2 zset1 zset2
1) "one"
2) "two"
127.0.0.1:6379> ZINTERCARD 2 zset1 zset2
(integer) 2
127.0.0.1:6379> ZINTERCARD 2 zset1 zset2 LIMIT 1
(integer) 1
RESP2/RESP3 回复
整数回复:结果交集中的成员数量。