首页 > 其他 > 详细

Redis List列表类型详解

时间:2021-02-10 12:53:27      阅读:28      评论:0      收藏:0      [点我收藏+]

List 是基本的数据类型,列表。redis命令不区分大小写

在redis中,可以把List用作 栈、队列、阻塞队列。

所有的list命令都是以“l”开头的

1.向List插入数值

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>

技术分享图片

 

 2.获取List全部的值

127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379>

技术分享图片

 

 3.利用lrange key start  stop 获取List指定区域的值

127.0.0.1:6379> lrange list 0 1
1) "three"
2) "two"
127.0.0.1:6379>

技术分享图片

 

 4.利用rpush插入列表右侧(尾部)数值

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

技术分享图片

 

 5.利用lpop移除第一个(左边)数值

127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "one"
4) "righr"
127.0.0.1:6379> lpop list
"three"
127.0.0.1:6379>    

技术分享图片

6.利用rpop移除最后一个(右边)数值

127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "one"
4) "righr"
127.0.0.1:6379> lpop list
"three"
127.0.0.1:6379> rpop list
"righr"
127.0.0.1:6379>   

技术分享图片

 

 7.利用lindex命令下标获取list中的某一个值

127.0.0.1:6379> lindex list 1
"one"
127.0.0.1:6379> lindex list 0
"two"
127.0.0.1:6379>  

技术分享图片

 

 8.利用Llen命令返回列表长度

127.0.0.1:6379> llen list
(integer) 2

技术分享图片

 

 9.利用Lrem key count value  移除指定的值

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

技术分享图片

 

 10.利用ltrim key start stop 命令修剪列表数据

通过下标截取指定的长度,这个list已经被改变了,截取了只剩下截取的元素。

127.0.0.1:6379> lpush mylist "hello"
(integer) 1
127.0.0.1:6379> lpush mylist "hello1"
(integer) 2
127.0.0.1:6379> lpush mylist "hello2"
(integer) 3
127.0.0.1:6379> lpush mylist "hello3"
(integer) 4
127.0.0.1:6379> ltrim mylist 1 2
OK
127.0.0.1:6379> lrange mylist 0 -1
1) "hello2"
2) "hello1"

技术分享图片

 

 11.利用rpoplpush移动列表的最后一个元素,将他移动到新的列表中。

127.0.0.1:6379> rpush mylist "hello"
(integer) 1
127.0.0.1:6379> rpush mylist "hello1"
(integer) 2
127.0.0.1:6379> rpush mylist "hello2"
(integer) 3
127.0.0.1:6379> lrange mylist 0 -1
1) "hello"
2) "hello1"
3) "hello2"
127.0.0.1:6379> rpoplpush mylist myotherlist
"hello2"
127.0.0.1:6379> lrange mylist 0 -1
1) "hello"
2) "hello1"
127.0.0.1:6379> lrange myotherlist 0 -1
1) "hello2"

技术分享图片

 

 12.利用exists key 判断列表是否存在

127.0.0.1:6379> exists mylist
(integer) 1
127.0.0.1:6379>

技术分享图片

 13.利用lset key index value将列表中指定下标的值替换为另一个值,更新操作。如果key不存在,则会报错。

127.0.0.1:6379> lpush list value1
(integer) 1
127.0.0.1:6379> lrange list 0 -1
1) "value1"
127.0.0.1:6379> lset list 0 item
OK
127.0.0.1:6379> lrange list 0 -1
1) "item"
127.0.0.1:6379>   

技术分享图片

 

 14.利用 linsert  key  before|after pivot value 将某个具体值插入到列表中指定值前面或后面。

127.0.0.1:6379> rpush mylist hell0
(integer) 1
127.0.0.1:6379> rpush mylist world
(integer) 2
127.0.0.1:6379> linsert mylist before world other
(integer) 3
127.0.0.1:6379> lrange mylist 0 -1
1) "hell0"
2) "other"
3) "world"
127.0.0.1:6379>  

技术分享图片

List小结:

  • 它实际上是一个链表,before node after ,left,right都可以插入值
  • 如果key不存在,创建新的链表
  • 如果key存在,新增内容
  • 如果移除了所有值,则变成了空链表,也代表不存在
  • 在两边插入或者改动值,效率最高!中间元素相对来说效率会低一点

使用场景:

消息排队

消息队列 (Lpush Rpop 左进右出)

栈 (Lpush Lpop 左进左出)

Redis List列表类型详解

原文:https://www.cnblogs.com/ckfuture/p/14395092.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!