列表(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