Redis从零开始之redis命令--Redis列表(list)

本文详细介绍了Redis中的列表数据结构,包括LPUSH、LPOP、RPOP、BRPOPLPUSH等关键命令的使用,以及如何通过LINDEX、LLEN、LREM等操作对列表进行索引获取、长度获取和元素移除。同时,还讨论了LTRIM命令用于对列表进行修剪,保持指定区间内的元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
一个列表最多可以包含 2的32次方 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

1、 LPUSH key value1 [value2]
将一个或多个值插入到列表头部

127.0.0.1:6379> lpush mylist xiaoming xiaoli xiaohong xiaojun lilei hanmeimei
(integer) 6
127.0.0.1:6379> LRANGE mylist 0 10
1) "hanmeimei"
2) "lilei"
3) "xiaojun"
4) "xiaohong"
5) "xiaoli"
6) "xiaoming"

2、 LPOP key
移出并获取列表的第一个元素

127.0.0.1:6379> LRANGE mylist 0 10
1) "lixiaolei"
2) "lilei"
3) "xiaojun"
4) "xiaohong"
127.0.0.1:6379> BLPOP mylist 5
1) "mylist"
2) "lixiaolei"

参数里面的“5” 表示超时间是5秒
回显的是列表的名字和被移除的元素名称(此处是列表的第一个元素)
3、 RPOP key
移除并获取列表最后一个元素

127.0.0.1:6379> LRANGE mylist 0 10
1) "lilei"
2) "xiaojun"
3) "xiaohong"
127.0.0.1:6379> BRPOP mylist 5
1) "mylist"
2) "xiaohong"
127.0.0.1:6379> LRANGE mylist 0 10
1) "lilei"
2) "xiaojun"

同样,回显的是列表的名字和被移除的元素名称(这里是列表的最后一个元素)

4、 BRPOPLPUSH source destination timeout
从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

127.0.0.1:6379> LRANGE mylist 0 10
1) "xiaohua"
2) "hanmeimei"
3) "lilei"
4) "xiaojun"
5) "xiaohong"
6) "xiaoli"
7) "xiaoming"
127.0.0.1:6379> BRPOPLPUSH mylist youlist 5
"xiaoming"
127.0.0.1:6379> LRANGE mylist 0 10
1) "xiaohua"
2) "hanmeimei"
3) "lilei"
4) "xiaojun"
5) "xiaohong"
6) "xiaoli"
127.0.0.1:6379> BRPOPLPUSH youlist youlist 5
"xiaoming"
127.0.0.1:6379> BRPOPLPUSH mylist youlist 5
"xiaoli"
127.0.0.1:6379> LRANGE youlist 0 10
1) "xiaoli"
2) "xiaoming"

5、 RPOPLPUSH source destination
移除列表的最后一个元素,并将该元素添加到另一个列表并返回
跟移除第一个元素添加到另一个列表一样,就不举例了。

6、 LINDEX key index
通过索引获取列表中的元素

127.0.0.1:6379> LRANGE mylist 0 10
1) "xiaohua"
2) "hanmeimei"
3) "lilei"
4) "xiaojun"
5) "xiaohong"
127.0.0.1:6379> LINDEX mylist 1
"hanmeimei"

索引是从0开始的

7、 LINSERT key BEFORE|AFTER pivot value
在列表的元素前或者后插入元素

127.0.0.1:6379> LRANGE mylist 0 10
1) "xiaohua"
2) "hanmeimei"
3) "lilei"
4) "xiaojun"
5) "xiaohong"
127.0.0.1:6379> LINSERT mylist before lilei lixiaolei
(integer) 6
127.0.0.1:6379> LRANGE mylist 0 10
1) "xiaohua"
2) "hanmeimei"
3) "lixiaolei"
4) "lilei"
5) "xiaojun"
6) "xiaohong"

8、 LLEN key
获取列表长度

127.0.0.1:6379> LLEN mylist
(integer) 6

返回的6“6”是列表元素的个数。

9、 LPOP key
移出并获取列表的第一个元素

127.0.0.1:6379> LRANGE mylist 0 10
1) "lilei"
2) "xiaojun"
127.0.0.1:6379> LPOP mylist
"lilei"
127.0.0.1:6379> LRANGE mylist 0 10
1) "xiaojun"

10、 LREM key count value
移除列表元素,经常用来移除相同的元素。

127.0.0.1:6379> LRANGE youlist 0 10
1) "hello"
2) "hello"
3) "hello"
4) "helloworld"
127.0.0.1:6379> LREM youlist 2 hello
(integer) 2
127.0.0.1:6379> LRANGE youlist 0 10
1) "hello"
2) "helloworld"

11、 RPUSH key value1 [value2]
在列表中添加一个或多个值,上面已经说过了。

127.0.0.1:6379> LRANGE mylist 0 10
1) "xiaojun"
127.0.0.1:6379> RPUSH mylist xiaoyi xiaoer xiaosi xiaowu xiaoliu xiaoqi
(integer) 7
127.0.0.1:6379> LRANGE mylist 0 10
1) "xiaojun"
2) "xiaoyi"
3) "xiaoer"
4) "xiaosi"
5) "xiaowu"
6) "xiaoliu"
7) "xiaoqi"

12、 LTRIM key start stop
对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。

127.0.0.1:6379> LRANGE mylist 0 10
1) "xiaojun"
2) "xiaoyi"
3) "xiaoer"
4) "xiaosi"
5) "xiaowu"
6) "xiaoliu"
7) "xiaoqi"
127.0.0.1:6379> LTRIM mylist 3 5
OK
127.0.0.1:6379> LRANGE mylist 0 10
1) "xiaosi"
2) "xiaowu"
3) "xiaoliu"

保留下来的是 索引为3到索引为5之间的元素(从0开始的)

13、RPUSHX key value
为已存在的列表添加值
较多一个判断,用法跟RPUSH一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值