Redis五大数据类型--List常用命令(二)

在redis中,我们可以把List看成是栈、队列、阻塞队列!

1、lpush 和rpush 的命令

127.0.0.1:6379> lpush list one # 将一个值或者多个值插入到列表左边(头部)
(integer) 1
127.0.0.1:6379> lpush list two
(integer) 2
127.0.0.1:6379> lpush list three
(integer) 3
127.0.0.1:6379> lrange list 0 -1 # 获取全部的值
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> lrange list 0 1 # 获取从头部开始,索引为0和1的值
1) "three"
2) "two"
127.0.0.1:6379> rpush list right # 将一个值或者多个值插入到列表右边(尾部)
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "one"
4) "right"

在这里插入图片描述
2、lpop 和 rpop 的命令

127.0.0.1:6379> lpop list # 从列表的左侧移除值
"three"
127.0.0.1:6379> rpop list # 从列表的右侧移除值
"right"
127.0.0.1:6379> lrange list 0 -1
1) "two"
2) "one"

在这里插入图片描述
3、Lindex 和 Llen 的命令

127.0.0.1:6379> lindex list 1
"one"
127.0.0.1:6379> lindex list 0
"two"
127.0.0.1:6379> llen list
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "two"
2) "one"

在这里插入图片描述
4、lrem 命令

127.0.0.1:6379> lpush list one
(integer) 1
127.0.0.1:6379> lpush list one
(integer) 2
127.0.0.1:6379> lpush list one
(integer) 3
127.0.0.1:6379> lpush list two
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "two"
2) "one"
3) "one"
4) "one"
127.0.0.1:6379> lrem list 1 one # 移除指定个数的值
(integer) 1
127.0.0.1:6379> lrange list 0 -1
1) "two"
2) "one"
3) "one"
127.0.0.1:6379> lrem list 2 one
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "two"

在这里插入图片描述
5、ltrim 命令

127.0.0.1:6379> rpush list h1
(integer) 1
127.0.0.1:6379> rpush list h2
(integer) 2
127.0.0.1:6379> rpush list h3
(integer) 3
127.0.0.1:6379> rpush list h4
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "h1"
2) "h2"
3) "h3"
4) "h4"
127.0.0.1:6379> ltrim list 1 2 # 截取掉索引为1到2之间的元素
OK
127.0.0.1:6379> lrange list 0 -1
1) "h2"
2) "h3"

在这里插入图片描述
6、rpoplpush 命令

127.0.0.1:6379> rpush list "hello"
(integer) 1
127.0.0.1:6379> rpush list "hello1"
(integer) 2
127.0.0.1:6379> rpush list "hello2"
(integer) 3
127.0.0.1:6379> lrange list 0 -1
1) "hello"
2) "hello1"
3) "hello2"
127.0.0.1:6379> rpoplpush list mylist # 弹出一个值,然后放到另一个列表中去
"hello2"
127.0.0.1:6379> lrange list 0 -1
1) "hello"
2) "hello1"
127.0.0.1:6379> lrange mylist 0 -1
1) "hello2"

在这里插入图片描述
7、lset 命令

127.0.0.1:6379> exists list
(integer) 0
127.0.0.1:6379> lset list 0 value # 不存在则会报错
(error) ERR no such key
127.0.0.1:6379> lpush list value
(integer) 1
127.0.0.1:6379> lrange list 0 0
1) "value"
127.0.0.1:6379> lset list 0 item # 如果存在,替换原有的值
OK
127.0.0.1:6379> lrange list 0 0
1) "item"

在这里插入图片描述
7、Linsert 命令

127.0.0.1:6379> lpush list hello
(integer) 1
127.0.0.1:6379> lpush list world
(integer) 2
127.0.0.1:6379> linsert list before world , # 在world之前插入逗号,用after就是之后插入
(integer) 3
127.0.0.1:6379> lrange list 0 -1
1) ","
2) "world"
3) "hello"

在这里插入图片描述

总结

  • List实际上是一个链表,在before、after、left、right都可以插入值
  • 如果List中key不存在,则创建新的链表
  • 如果key存在,会新增内容
  • 如果移除了所有值,也就是空链表,也就代表List列表不存在!
  • 如果在List两端进行插入或者修改值,则效率最高!在列表操作中间元素,相对来说效率会低一点
  • List可以看作是消息排队!消息队列 (Lpush Rpop), 栈( Lpush Lpop)!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不爱吃零食的北鼻

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

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

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

打赏作者

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

抵扣说明:

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

余额充值