ARGREP
使用文本谓词搜索范围内的数组元素。
语法
ARGREP key start end [AND | OR | LIMIT limit | WITHVALUES | NOCASE [...]]
引入版本:8.8.0
复杂度摘要:O(P * C)
使用文本谓词搜索范围内的数组元素并返回匹配元素的索引。范围内的空槽将被跳过。
必需参数
key
保存数组的键的名称。
start
开始搜索的从零开始的整数索引。特殊值 - 表示数组的第一个索引。如果 start 大于 end,则按相反索引顺序返回匹配项。
end
停止搜索的从零开始的整数索引(含)。特殊值 + 表示数组的最后一个索引。
predicate
一个或多个文本谓词,用于针对范围中的每个非空元素进行评估。每个谓词是以下之一:
EXACT string— 匹配值恰好等于string的元素。MATCH string— 匹配其值包含string作为子字符串的元素。GLOB pattern— 匹配其值与 glob 样式pattern匹配的元素(使用*、?和[...]通配符),与KEYS和SCANMATCH使用的语法相同。RE pattern— 匹配其值与正则表达式pattern匹配的元素。
当提供多个谓词时,使用 AND 或 OR 选项来控制它们的组合方式。默认为 OR。
可选参数
options
零个或多个以下修饰符:
AND— 使用逻辑 AND 组合多个谓词。仅当每个谓词都匹配时,元素才匹配。OR— 使用逻辑 OR 组合多个谓词。如果任何谓词匹配,则元素匹配。这是默认设置。LIMIT limit— 收集limit匹配后停止。limit必须是正整数。省略时,将返回范围内的所有匹配项。WITHVALUES— 除了每个匹配索引之外,还返回匹配值。回复变成一个索引值对的数组,每个索引值对都是一个二元素数组。NOCASE— 对EXACT、MATCH、GLOB和RE执行不区分大小写的比较。
示例
redis> ARMSET log 0 "boot: ok" 1 "warn: disk" 2 "ERROR: cpu" 3 "info: ready" 4 "error: net"
(integer) 5
redis> ARGREP log - + MATCH "error" NOCASE
1) (integer) 2
2) (integer) 4
redis> ARGREP log - + MATCH "error" NOCASE WITHVALUES
1) 1) (integer) 2
2) "ERROR: cpu"
2) 1) (integer) 4
2) "error: net"
redis> ARGREP log 0 4 GLOB "warn:*" OR GLOB "error:*"
1) (integer) 1
2) (integer) 4
redis> ARGREP log 0 4 RE "^[A-Za-z]+: (cpu|net)$" NOCASE WITHVALUES
1) 1) (integer) 2
2) "ERROR: cpu"
2) 1) (integer) 4
2) "error: net"
redis> ARGREP log 0 4 EXACT "info: ready"
1) (integer) 3
redis> ARGREP log - + MATCH "error" NOCASE LIMIT 1
1) (integer) 2
Redis Software 与 Redis Cloud 兼容性
| Redis 软件 |
Redis Cloud |
说明 |
|---|---|---|
| ✅ 标准 |
❌ 标准 |
返回值
RESP2
数组回复:匹配元素的索引,与遍历范围的顺序相同(start <= end 时升序,start > end 时降序)。当给出 WITHVALUES 时,索引值对数组,每个索引值对都是两元素数组:[[idx1, val1], [idx2, val2], ...]。当键不存在或没有元素匹配时,返回空数组。
RESP3
数组回复:匹配元素的索引,与遍历范围的顺序相同(start <= end 时升序,start > end 时降序)。当给出 WITHVALUES 时,索引值对数组,每个索引值对都是两元素数组:[[idx1, val1], [idx2, val2], ...]。当键不存在或没有元素匹配时,返回空数组。
资料来源:Redis 官方 ARGREP 文档;中文内容参考 Redis 文档许可。