LINDEX:获取指定索引上的元素
Redis 列表包含的每个元素都有与之相对应的正数索引和负数索引:
正数索引从列表的左端开始计算,依次向右端递增:最左端元素的索引为
0
,左端排行第二的元素索引为1
,左端排行第三的元素索引为2
,以此类推。最大的正数索引为列表长度减一,也即是N-1
。负数索引从列表的右端开始计算,依次向左端递减:最右端元素的索引为
-1
,右端排行第二的元素索引为-2
,右端排行第三的元素索引为-3
,以此类推。最大的负数索引为列表长度的负数,也即是-N
。
作为例子,图 4-17 展示了一个包含多个元素的列表,并给出了列表元素对应的正数索引和负数索引。
图 4-17 列表的索引
为了让用户可以方便地取得索引对应的元素,Redis 提供了 LINDEX
命令:
- LINDEX list index
这个命令接受一个列表和一个索引作为参数,然后返回列表在给定索引上的元素;其中给定索引既可以是正数,也可以是负数。
比如说,对于前面展示的图 4-17 ,我们可以通过执行以下命令,取得 alphabets
列表在指定索引上的元素:
- redis> LINDEX alphabets 0
- "a"
- redis> LINDEX alphabets 3
- "d"
- redis> LINDEX alphabets 6
- "g"
- redis> LINDEX alphabets -3
- "f"
- redis> LINDEX alphabets -7
- "b"
处理超出范围的索引
对于一个长度为 N
的非空列表来说:
它的正数索引必然大于等于
0
,并且少于等于N-1
;而它的负数索引则必然小于等于
-1
,并且大于等于-N
;
如果用户给定的索引超出了这一范围,那么 LINDEX
命令将返回空值,以此来表示给定索引上并不存在任何元素:
- redis> LINDEX alphabets 100
- (nil)
- redis> LINDEX alphabets -100
- (nil)
其他信息
属性 | 值 |
---|---|
复杂度 | O(N) ,其中 N 为给定列表的长度。 |
版本要求 | LINDEX 命令从 Redis 1.0.0 版本开始可用。 |