*Redis ARCOUNT 命令
ARCOUNT 统计数组中满足给定条件的元素数量。
*语法
ARCOUNT key [MATCH pattern]
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | String | 是 | 数组键名 |
| MATCH pattern | String | 否 | 匹配模式(支持 glob 风格通配符) |
*返回值
- Integer:满足条件的元素数量;无 MATCH 时返回数组长度
- 0:数组为空或不存在
- Error:key 存储的不是 Array 类型
*时间复杂度
O(N),N 为数组元素数量。无 MATCH 时等价于 ARLEN,为 O(1)。
*示例
*统计数组全部元素
> ARSET myarr "apple" "banana" "cherry"
OK
> ARCOUNT myarr
(integer) 3
*按模式匹配统计
> ARSET tags "redis" "redisson" "mysql" "postgresql"
OK
> ARCOUNT tags MATCH "redis*"
(integer) 2
*空数组或不存在的 key
> ARCOUNT emptyarr
(integer) 0
> ARCOUNT notexist
(integer) 0
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| WRONGTYPE | key 不是 Array 类型 | 确认 key 的数据类型 |
| ERR wrong number of arguments | 缺少 key | 提供正确的 key |
*最佳实践
*FAQ
Q1: ARCOUNT 和 ARLEN 有什么区别? A: ARLEN 始终 O(1) 返回数组长度;ARCOUNT 支持 MATCH 过滤,无 MATCH 时与 ARLEN 等效。
Q2: MATCH 支持哪些通配符?
A: 支持 *(任意字符序列)、?(单个字符)、[abc](字符类),与 Redis KEYS 模式一致。
Q3: 可以统计嵌套数组元素吗? A: 不支持,MATCH 仅对顶层元素做字符串匹配。嵌套数据建议扁平化或使用 Hash/JSON。