*Redis ZINTERCARD 命令

返回多个 Sorted Set 的交集的 member 数量。Redis 7.0+ 引入。


*语法

ZINTERCARD numkeys key [key ...] [LIMIT limit]

*参数说明

参数 类型 必填 说明
numkeys Integer key 的数量
key String Sorted Set 键名
LIMIT Integer 如果交集数量超过 limit,返回 limit

*返回值

条件 返回值
有交集 交集数量(Integer)
无交集 0

*时间复杂度

O(N*M),N 为最小集合大小,M 为集合数量。


*示例

> ZADD zset1 1 a 2 b 3 c
(integer) 3
> ZADD zset2 2 b 3 c 4 d
(integer) 3

> ZINTERCARD 2 zset1 zset2
(integer) 2     # b 和 c

# 限制数量
> ZINTERCARD 2 zset1 zset2 LIMIT 1
(integer) 1

*常见错误

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

*最佳实践

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

*FAQ

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