当前位置: 首页 > news >正文

Redis--List类型

目录

一、引言

二、介绍

三、命令

1.lpush,lrange

2.lpushx,rpush,rpushx

3.lpop,rpop

4.lindex,linsert,llen

5.lrem

6.ltrim,lset

7.blpop,brpop

四、内部编码

1.ziplist:压缩列表

2.linkedlist:链表

3.quicklist:redis5之后的编码方式

五、应用场景

1.用list作为数组这样的结构存储多个元素

2.消息队列

3.微博TimeLine

六、总结


一、引言

  本篇文章就Redis中value的List类型做简单介绍。

二、介绍

    List相当于数组或顺序表(并非是一个简单的数组,更接近于双端队列)。lpush(头插)rpush(尾插)lpop(头删)rpop(尾删)。

  列表中的元素是有序的(有序指顺序很重要,如果把元素位置颠倒,顺序调换得到新的List和之前的List不等价)

  列表中的元素是允许重复的

  可以将列表当作栈/队列进行使用,例如:消息队列(Message Queue)

三、命令

1.lpush,lrange

  LPUSH:lpush key element[element...]一次可以插入一个元素或多个元素,如果key已经存在,这时使用lpush操作会进行报错

LRANGE:查看list中指定范围的元素(List range)

lrange key start stop

2.lpushx,rpush,rpushx

lpushx:key存在才能插入成功,不存在会失败

rpush:从右侧进行插入,尾插法

rpushx:和lpushx一样,存在才能插入

3.lpop,rpop

lpop:从左边弹出,头弹出

rpop:从右边弹出,尾弹出

4.lindex,linsert,llen

lindex:获取从左数的对应的元素 时间复杂度:O(N)

linsert:linsert key before | after pivot(具体的值) element

存在相同的元素,会执行第一个元素   时间复杂度:O(N)

llen:获取list的长度

5.lrem

lrem key count element

删除元素:count>0从左往右删   count<0 从右往左删   count=0  将所有的该元素删除

6.ltrim,lset

ltrim:ltrim key stary stop 范围保留,这个范围内的都保留,其余的都删除

lset:lset key index element  时间复杂度:O(N)

修改指定位置的元素

7.blpop,brpop

阻塞版本的lpop和rpop

如果list中存在元素,blpop和brpop的作用与lpop和rpop相同

如果list中不存在元素,blpop和brpop就会产生阻塞,一直阻塞到队列存在元素

可以设置阻塞时间,不一定是无休止的等待

如果设置了多个key,那么会从左往右进行遍历键,一旦一个键对应的列表可以弹出元素,命令立即返回

四、内部编码

1.ziplist:压缩列表

列表的元素小于list-max-entries配置(默认512个),列表中每个元素的长度小于64字节

2.linkedlist:链表

便于查找,但是存在一定的内存开销

3.quicklist:redis5之后的编码方式

相当于是链表和压缩列表的结合,整体还是一个链表,链表每个节点是一个压缩列表

五、应用场景

1.用list作为数组这样的结构存储多个元素

2.消息队列

生产者消费者模型:生产者(lpush)消费者(brpop)

3.微博TimeLine

还是将list作为数组进行存储

六、总结

  本篇文章简单介绍了value的list类型的相关操作以及相关的应用场景,下一篇文章将介绍redis中的集合set,感谢观看!

相关文章:

  • C/C++中对字符处理的常用函数
  • AutoGen智能体代码解读
  • [Ai 力扣题单] 数组基本操作篇 27/704/344
  • 4.Kettle调度oracle任务设置邮件预警功能
  • 解决ElementPlus对话框el-dialog中关闭事件重复触发问题
  • Android Retrofit 请求执行模块执行原理深入源码分析(三)
  • 力扣hot100二刷——链表
  • Pac-Man(吃豆人) 游戏
  • Redis 缓存数据库
  • Node.js:快速启动你的第一个Web服务器
  • 考研数学非数竞赛复习之Stolz定理求解数列极限
  • IP 地址
  • 跳表数据结构
  • 大数据学习(63)- Zookeeper详解
  • 索引-最左匹配
  • 【项目设计】基于AMQP协议实现的简单消息队列
  • android okhttp几种日志拦截级别区别
  • 数据可视化图表库LightningChart JS 全新发布v7.0——提高视觉质量
  • 7-9 抢红包
  • 从技术创新到全球布局:MOVA割草机器人以尖端科技定义智能园艺
  • 特朗普宣布提名迈克·沃尔兹为下一任美国驻联合国大使
  • 韩国经济副总理崔相穆宣布辞职
  • 申活观察|咖香涌动北外滩,带来哪些消费新想象?
  • 揭秘神舟十九号返回舱“软着陆”关键:4台发动机10毫秒内同时点火
  • 广东省副省长刘红兵任湖南省委常委、宣传部部长
  • 浦发银行一季度净利175.98亿增1.02%,不良率微降