列表(List),就是存放一组数据的列表,就相当于我们编程语言中所使用的数组
。列表
顺序就是插入的顺序,可以从列表的头部
插入元素,也可以从尾部
插入元素。
Redis
中一个列表最多包含 2 的 32 次方 - 1 (4294967295)个元素。
LPUSH/RPUSH 列表插入
LPUSH
命令是向列表中插入一个或多个元素,是列表的头部插入。列表如果不存在则会自动创建。
向列表中插入单个元素:
127.0.0.1:6379> LPUSH cities beijing
(integer) 1
向列表中插入多个元素:
127.0.0.1:6379> LPUSH cities shanghai shenzheng
(integer) 3
RPUSH
命令是从列表的尾部插入一个或多个元素,如果列表的key不存在,同样会自动创建。
127.0.0.1:6379> RPUSH cities guangzhou
(integer) 4
LRANGE 获取列表中的元素
使用LRANGE
命令可以获取一个列表中指定范围
的元素,获取时要指定开始和结束的元素的索引。
比如,要获取前面插入的列表的前 3 个元素:
127.0.0.1:6379> LRANGE cities 0 2
1) "shenzheng"
2) "shanghai"
3) "beijing"
索引从 0 开始,表示第一个元素,1 表示第二个元素,以此类推。负数索引表示倒数第几个元素,-1 表示最后一个元素,-2 表示倒数第二个元素。
获取全部元素,就是从第 1 个元素到最后一个元素 -1:
127.0.0.1:6379> LRANGE cities 0 -1
1) "shenzheng"
2) "shanghai"
3) "beijing"
4) "guangzhou"
LSET/LINDEX 设置或获取元素值
通过索引来设置一个列表的值,就是使用LSET
命令,比如将第 3 个元素设置为wuhan
:
127.0.0.1:6379> LSET cities 2 wuhan
OK
127.0.0.1:6379> LRANGE cities 0 -1
1) "shenzheng"
2) "shanghai"
3) "wuhan"
4) "guangzhou"
设置时,当指定的索引
超出范围,返回一个错误。如果对一个空列表
进行 LSET
时,也会返回一个错误。
如何通过索引获取对应的元素值呢?那就是使用LINDEX
命令:
127.0.0.1:6379> LINDEX cities 2
"wuhan"
LPOP/RPOP 移除并返回第一个或最后一个元素
从列表的移除第一个元素,并返回这个元素使用LPOP
命令:
127.0.0.1:6379> LPOP cities
"shenzheng"
如果是移除最后一个元素,使用RPOP
命令:
127.0.0.1:6379> RPOP cities
"guangzhou"
127.0.0.1:6379> LRANGE cities 0 -1
1) "shanghai"
2) "wuhan"
更多
关于Redis
中列表的命令,还有几个,比如:LLEN
LREM
LINSERT
等,更多可以查看官方文档(https://redis.io/docs/latest/commands/?group=list)