*Redis LPOS 命令 返回列表中匹配元素的索引位置
*LPOS
*语法
LPOS key element [RANK rank] [COUNT num-matches] [MAXLEN len]
*说明
LPOS 返回列表 key 中第一个匹配 element 的元素的索引。
默认情况下,命令从列表头部向尾部扫描,返回第一个匹配元素的索引(从 0 开始计数)。如果未找到匹配元素,返回 nil。
支持以下可选参数:
- **
RANK rank**:指定返回第rank个匹配的元素。rank为正数时从左向右计数,为负数时从右向左计数。例如RANK 2返回第二个匹配,RANK -1返回从尾部开始的第一个匹配。 - **
COUNT num-matches**:返回最多num-matches个匹配索引的数组。COUNT 0表示返回所有匹配的索引。 - **
MAXLEN len**:仅扫描列表的前len个元素,用于在大列表中提高查找效率。
*示例
# 构建测试列表: ["a", "b", "c", "1", "2", "3", "c", "c"]
redis-cli RPUSH mylist a b c 1 2 3 c c
# 返回第一个 "c" 的索引
redis-cli LPOS mylist c
# 返回第二个 "c" 的索引
redis-cli LPOS mylist c RANK 2
# 从尾部开始第一个 "c" 的索引
redis-cli LPOS mylist c RANK -1
# 返回所有 "c" 的索引
redis-cli LPOS mylist c COUNT 0
# 组合使用:从倒数第一个匹配开始,最多返回 2 个
redis-cli LPOS mylist c RANK -1 COUNT 2
*返回值
- Integer reply:匹配元素的索引(未使用
COUNT且找到匹配时)。 - Array reply:匹配索引的数组(使用
COUNT时)。 - Nil reply:未找到匹配元素(未使用
COUNT时)。 - Empty array:未找到匹配元素(使用
COUNT时)。
*版本兼容性
| 版本 | 说明 |
|---|---|
| >= 6.0.6 | 可用 |
| < 6.0.6 | 不支持 |
*时间复杂度
O(N),其中 N 为扫描的元素数量,受 MAXLEN 限制(若指定)。