*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

*最佳实践

  • 简单计数优先使用 ARLEN(O(1))
  • MATCH 模式在大数组上谨慎使用,避免全量扫描
  • 结合 ARSCAN 做分页统计,避免阻塞

*FAQ

Q1: ARCOUNT 和 ARLEN 有什么区别? A: ARLEN 始终 O(1) 返回数组长度;ARCOUNT 支持 MATCH 过滤,无 MATCH 时与 ARLEN 等效。

Q2: MATCH 支持哪些通配符? A: 支持 *(任意字符序列)、?(单个字符)、[abc](字符类),与 Redis KEYS 模式一致。

Q3: 可以统计嵌套数组元素吗? A: 不支持,MATCH 仅对顶层元素做字符串匹配。嵌套数据建议扁平化或使用 Hash/JSON。