*Redis ARGREP 命令

ARGREP 在数组中搜索匹配模式的元素并返回。


*语法

ARGREP key pattern [COUNT count]

*参数说明

参数 类型 必填 说明
key String 数组键名
pattern String 搜索模式(glob 风格通配符)
COUNT count Integer 最多返回匹配数量,默认返回全部

*返回值

  • Array:匹配的元素列表
  • Empty array:无匹配元素
  • Nil:key 不存在
  • Error:key 存储的不是 Array 类型

*时间复杂度

O(N),N 为数组长度。


*示例

*基本模式匹配

> ARSET files "report.pdf" "data.csv" "image.png" "notes.txt"
OK
> ARGREP files "*.pdf"
1) "report.pdf"

*限定返回数量

> ARGREP files "*.txt" COUNT 5
1) "notes.txt"

*多字符通配

> ARSET users "alice_001" "bob_002" "alice_003" "charlie_001"
OK
> ARGREP users "alice_*"
1) "alice_001"
2) "alice_003"

*常见错误

错误 原因 解决
WRONGTYPE key 不是 Array 类型 确认 key 的数据类型
ERR wrong number of arguments 缺少 pattern 提供搜索模式

*最佳实践

  • 大数组上做 ARGREP 可能阻塞,考虑使用 ARSCAN 流式搜索
  • COUNT 参数限制返回量,避免输出过大
  • 需要精确匹配时直接用 ARGET 配合索引,比 ARGREP 更高效

*FAQ

Q1: ARGREP 和 ARSCAN MATCH 有什么区别? A: ARGREP 是阻塞式全量搜索并返回结果;ARSCAN 是游标式迭代,适合大数组。

Q2: 支持正则表达式吗? A: 不支持,仅支持 glob 风格通配符(*?[abc])。

Q3: 匹配是大小写敏感的吗? A: 默认大小写敏感,暂不支持大小写不敏感匹配。