*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
*常见错误
- numkeys 与实际数量不匹配:返回错误。
*最佳实践
- 只关心数量:当只需要知道交集有多少元素时,用 ZINTERCARD 比 ZINTER 更节省内存和网络。
*FAQ
Q: ZINTERCARD 和 ZINTER 有什么区别? A: ZINTERCARD 只返回交集数量;ZINTER 返回交集元素数组。大数据量时 ZINTERCARD 更节省资源。