1. LRANGE key start stop
返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。
下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。
你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
要取全部元素,可以使用 lange key 0 -1
注意LRANGE命令和编程语言区间函数的区别
假如你有一个包含一百个元素的列表,对该列表执行 LRANGE list 0 10 ,结果是一个包含11个元素的列表,这表明 stop 下标也在 LRANGE 命令的取值范围之内(闭区间),这和某些语言的区间函数可能不一致,比如Ruby的 Range.new 、 Array#slice 和Python的 range() 函数。
超出范围的下标
超出范围的下标值不会引起错误。
- 如果 start 下标比列表的最大下标 end ( LLEN list 减去 1 )还要大,那么 LRANGE 返回一个空列表。
- 如果 stop 下标比 end 下标还要大,Redis将 stop 的值设置为 end 。
1.1. 起始版本:
1.0.0
1.2. 时间复杂度:
O(S+N), S 为偏移量 start , N 为指定区间内元素的数量。
1.3. 返回值:
一个列表,包含指定区间内的元素。
1.4. DEMO
# 1. 插入7个字母
127.0.0.1:6379> LPUSH mylist a b c d e f g
(integer) 7
# 获取所有元素列表
127.0.0.1:6379> LRANGE mylist 0 -1
1) "g"
2) "f"
3) "e"
4) "d"
5) "c"
6) "b"
7) "a"
# 获取前3个元素
127.0.0.1:6379> LRANGE mylist 0 2
1) "g"
2) "f"
3) "e"
# 获取后3个元素
127.0.0.1:6379> LRANGE mylist -3 -1
1) "c"
2) "b"
3) "a"
# start索引超出界限,不会报错,会返回空列表
127.0.0.1:6379> LRANGE mylist 7 -1
(empty list or set)
# stop索引超界, Redis将 stop设置为end
127.0.0.1:6379> LRANGE mylist 0 100
1) "g"
2) "f"
3) "e"
4) "d"
5) "c"
6) "b"
7) "a"