Redis(五)—— List 列表类型详解

Redis(五)—— List 列表类型详解

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

一个列表最多可以包含 2^32 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

实例

将三个值插入名为 list 的列表的头部(左边): LPUSH

127.0.0.1:6379> LPUSH list one
(integer) 1
127.0.0.1:6379> lpush list hello
(integer) 2
127.0.0.1:6379> lpush list hi  #最后存放的值下标为0
(integer) 3
127.0.0.1:6379> lrange list 0 1
1) "hi"       #0  
2) "hello"    #1
127.0.0.1:6379> lrange list 0 -1 #查看列表中所有的值
1) "hi"       #0
2) "hello"    #1
3) "one"      #2

将值插入名为 list 的列表的尾部(右边): RPUSH

127.0.0.1:6379> rpush list right
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "hi"
2) "hello"
3) "one"
4) "right"

**取出 list 列表中的值: lpop rpop **

127.0.0.1:6379> lrange list 0 -1
1) "hi"
2) "hello"
3) "one"
4) "right"
127.0.0.1:6379> lpop list #从列表的头部(左边)取出
"hi"
127.0.0.1:6379> rpop list #列表的尾部(右边)取出
"right"
127.0.0.1:6379> lrange list 0 -1 
1) "hello"
2) "one"
127.0.0.1:6379> lindex list 0  #通过list下标获取值
"hello"
127.0.0.1:6379> lindex list 1
"one"

**返回列表长度 llen **

127.0.0.1:6379> lrange list 0 -1
1) "hello"
2) "one"
3) "two"
4) "three"
127.0.0.1:6379> llen list
(integer) 4

**移除列表中指定个数的value lrem **

127.0.0.1:6379> lrange list 0 -1
1) "hello"
2) "one"
3) "two"
4) "three"
5) "three"
127.0.0.1:6379> lrem list 1 one  #移除list 中的一个 one
(integer) 1
127.0.0.1:6379> lrange list 0 -1
1) "hello"
2) "two"
3) "three"
4) "three"
127.0.0.1:6379> lrem list 2 three  #移除list 中的两个 three
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "hello"
2) "two"

截取列表中指定范围的值:截取后列表中只剩下被截取的内容 ltrim

127.0.0.1:6379> lrange mylist 0 -1
1) "hello1"
2) "hello2"
3) "hello3"
4) "hello4"
5) "hello5"
127.0.0.1:6379> ltrim mylist 1 2  #截取list 中[1,2]的值
OK
127.0.0.1:6379> lrange mylist 0 -1
1) "hello2"
2) "hello3"

把一个列表的value取出放入另一个列表 rpoplpush

127.0.0.1:6379> lpush mylist hello1
(integer) 3
127.0.0.1:6379> rpush mylist hello4
(integer) 4
127.0.0.1:6379> lrange mylist 0 -1
1) "hello1"
2) "hello2"
3) "hello3"
4) "hello4"
127.0.0.1:6379> rpoplpush mylist otherlist  #从右边(尾部)取出mylist的value,从左边(头部)放入otherlist,如果otherlist不存在则会创建
"hello4"
127.0.0.1:6379> rpoplpush mylist otherlist
"hello3"
127.0.0.1:6379> lrange mylist 0 -1
1) "hello1"
2) "hello2"
127.0.0.1:6379> lrange otherlist 0 -1
1) "hello3"
2) "hello4"

**替换列表中指定下标的值 lset **

127.0.0.1:6379> exists mylist  #判断列表是否存在
(integer) 1  #存在
127.0.0.1:6379> lrange mylist 0 -1
1) "hello1"
2) "hello2"
127.0.0.1:6379> lset mylist 0 hi  #替换列表中第一个值,如果第一个值不存在则报错
OK
127.0.0.1:6379> lrange mylist 0 -1
1) "hi"
2) "hello2"

在列表的指定位置插入value,可以选择在某个值前面或者后面插入 linsert

127.0.0.1:6379> lrange mylist 0 -1
1) "hi"
2) "hello2"
#在mylist列表的hello2值前面插入hello1
127.0.0.1:6379> linsert mylist before hello2 hello1  
(integer) 3
127.0.0.1:6379> lrange mylist 0 -1
1) "hi"
2) "hello1"
3) "hello2"
#在mylist列表的hello2值后面插入hello3
127.0.0.1:6379> linsert mylist after hello2 hello3
(integer) 4
127.0.0.1:6379> lrange mylist 0 -1  #插入完成
1) "hi"
2) "hello1"
3) "hello2"
4) "hello3"


如果把链表中的值都移除,那么链表将不存在

127.0.0.1:6379> lpop mylist
(nil)
127.0.0.1:6379> exists mylist
(integer) 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万里顾—程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值