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

详解redis(7):数据结构List

一、List 是什么?

Redis List 的本质

有序的字符串序列,按插入顺序排列,两端操作快

你可以把它理解成:

双端队列

支持:

左边进 / 左边出

右边进 / 右边出

二、Redis 早期 List 的两种底层结构

Redis 的哲学:小数据用紧凑结构,大数据用通用结构

压缩列表

是什么?

一整块连续内存的紧凑结构

特点

内存占用极小
cache 友好
插入/删除需要移动内存
结构复杂(连锁更新问题)

双向链表

触发条件

元素数量多

或元素变大

node ⇄ node ⇄ node ⇄ node

特点

插入删除 O(1)
每个节点额外指针,内存浪费大
cache 命中率低

结构问题
ziplist修改代价大
linkedlist内存碎片多
共存代码复杂

三、Redis 3.2 之后的终极方案:QuickList

quicklist = 链表 + 压缩列表

quicklist 长什么样?

quicklist
┌────────┐ ┌────────┐ ┌────────┐
│ ziplist│ ⇄ │ ziplist│ ⇄ │ ziplist│
└────────┘ └────────┘ └────────┘

外层:双向链表

每个节点:一个 ziplist

quicklist 为什么比老方案好?

内存友好

一个 ziplist 里放多个元素

指针数量大幅减少

插入删除更快

一般只改某一个 ziplist

不用移动整个大 ziplist

cache 友好

ziplist 是连续内存

访问局部性强

操作复杂度

操作时间复杂度
LPUSH / RPUSHO(1)
LPOP / RPOPO(1)
LINDEXO(n)
LRANGEO(n)

四、什么时候该用 List?

适合

消息队列(简单版)

时间线

任务队列

栈 / 队列

不适合

频繁随机访问

需要按 value 查找

五、消息队列到底要满足什么?

一个合格的消息队列(MQ),至少要满足这 3 点:

能力含义
消息保序消息按发送顺序被消费
去重能力同一条消息不会被重复处理
消息可靠性消息不会“丢”

List 如何实现“消息保序”?(FIFO)

List 天然有序

Redis List 的特点:

有序

按插入顺序排列

两端操作快

所以它天然适合 FIFO 队列

为什么是 LPUSH + RPOP?

生产者:LPUSH ←←←
List
消费者: →→→ RPOP

List 消费的第一个问题:CPU 空转

解决方案:BRPOP(阻塞式)

BRPOP 的行为

如果队列为空

客户端阻塞(挂起)

一旦有新消息

立刻返回

不是忙等,是内核级等待

极大降低 CPU 消耗
非常适合 MQ 场景

http://www.jsqmd.com/news/290237/

相关文章:

  • 详解redis(8):数据结构Hash
  • 详解redis(9):数据结构set
  • 一文学习 了解 OSI模型、TCP/IP模型、网络封包
  • 深入解析:Linux动态存储管理的逻辑卷使用示例
  • 北京附近上门回收酒
  • YOLOv8目标检测:从理论到实战的飞跃之旅
  • 用AI制作表格实战:20个高频ChatExcel指令词,告别低效Excel操作
  • 打破 NotebookLM 最后的限制:我写了个开源工具,把 PDF 瞬间变回可编辑 PPT!
  • 力扣122 买卖股票的最佳时机II java实现
  • STM32项目分享:图书馆环境监测系统
  • 2026年矩阵系统避坑指南:市面主流软件真实横评,到底哪家好?
  • 2026年私域的八大挑战及发展方向
  • 7×24小时技术支持的售后服务系统有哪些?
  • 2026年矩阵系统选型图谱:5款主流软件的“性格画像”与适用场景匹配
  • 能对接电商系统的售后服务系统有哪些?
  • APS概念-需求时间供应时间
  • APS概念-新订单开始日期延迟
  • APS概念-可承诺量 / 承诺能力拉动容差
  • APS概念-ATP和CTP
  • APS概念-供应耗用容差
  • 互联网医院系统|互联网医院成品|互联网医院开发
  • 干货分享|FPGA、CPU与GPU协同计算架构
  • 太空算力、AI上星与卫星智能化
  • 2025年毕业论文救星!8款AI写论文工具实测,一键改重降重+高级表达替换,原创度飙升!
  • 基于深度学习的交通锥形桶检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
  • 问题记录与反思
  • Qt 属性绑定(Property Binding)机制提供的完整、详细教程与丰富示例,重点覆盖 Qt 6.x 的现代用法
  • 行政管理大专生经济压力大?考这高性价比证书,副业收入超主业
  • 故障复盘:从“组播协议疑云”到“物理协商真相”——记一次视频流中断的排查之旅
  • 深入 Flutter for OpenHarmony 组件属性配置:从代码细节看 UI 表现力构建