列表(list
)相当于数组或者顺序表
0
Redis
的下标支持负数下标(从后往前数)list
内部的结果(编码方式),并非是一个简单的数组,而是更接近于“双端队列”(deque
)列标中的元素是“有序“的,有序的含义,要根据上下文区分
list
和之前的 list
是不等价的hash
这样的类型,field
是不能重复的list
,头和尾都能高效的插入删除元素,就可以把这个 list
当做一个栈/队列来使用了
Redis
有一个典型的应用场景,就是作为“消息队列”
list
类型来实现的Redis
又提供了一个 stream
类型将一个或者多个元素从左/右侧放入(头/尾插)到 list
中
语法:
LPUSH key element [element ...]
,插入多个元素为:
,
为插入元素个数
list
的长度key
已经存在,并且 key
对应的 value
类型,不是 list
,此时 lpush
命令就要报错 获取从 start
到 end
区间的所有元素,左闭右闭
语法:
LRANGE key start stop
当在
Redis
中下标超出范围的时候,Redis
会直接尽可能的获取到给定区间的元素。如果给定区间非法,比如超出小标,就会尽可能的获取对应的内容
当 key
存在时,将一个或者多个元素从左/右侧放入(头/尾插)到 list
中。不存在,就直接返回
语法:
LPUSHX key element [element ...]
,插入多个元素为:
,
为插入元素个数
list
的长度从 list
左/右侧取出元素(即头/尾删)
语法:
LPOP key
nil
获取从左数第 index
位置的元素
语法:
LINDEX key index
nil
在特定位置插入元素
语法:
LINSERT key <BEFORE | AFTER> pivot element
list
长度万一插入元素的时候,基准值有多个,就找第一个基准值