当前位置: 首页 > 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割草机器人以尖端科技定义智能园艺
  • 商务部:一季度我国服务贸易较快增长,进出口总额同比增8.7%
  • 周口一乡镇公务员“被老赖”,两年4场官司均败诉,市监局将线索移送公安厅
  • 大学2025丨专访南开人工智能学院院长赵新:人工智能未来会变成通识类课程
  • 新闻1+1丨应对外部冲击,中央政治局会议释放哪些信号?
  • 国家数据发展研究院在京正式揭牌
  • 亚振家居控制权将变更:济南域潇集团实控人成新控股股东