详解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.mzph.cn/news/1206473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解redis(8):数据结构Hash

一、Hash 是什么? 逻辑层面 key user:1 value {name: "xiaolin",age: 18,city: "beijing" }也就是: HSET user:1 name xiaolin age 18 city beijingHash vs String 用 String 存对象 SET user:1 {"name":"xia…

详解redis(9):数据结构set

一、Redis Set 是什么Set 不重复 无顺序的集合一个 自动去重、不关心顺序 的容器二、Set 和 List 的本质区别对比项ListSet是否允许重复✅ 允许❌ 不允许是否有顺序✅ 有顺序(下标)❌ 无序能否按下标访问✅ LINDEX❌ 不支持是否支持集合运算❌✅ 交集 …

一文学习 了解 OSI模型、TCP/IP模型、网络封包

2017-8-31 [[N_EMQX]] [[Java Email]] OSI 7层模型 OSI 是 Open System Interconnect的缩写,意为开放式系统互联. 是国际标准化组织(ISO)提出的一个概念性框架,用于定义网络通信系统的标准架构. OSI七层参考模型的…

深入解析:Linux动态存储管理的逻辑卷使用示例

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

北京附近上门回收酒

家里堆着过节收到的茅台五粮液没处用?老父亲珍藏多年的董酒、习酒想变现却怕踩坑?手里有闲置洋酒不知道找谁回收靠谱?在北京,找对渠道才能让闲置名酒既卖得上价,又省心安全——京城亚南酒业,深耕本地名酒回收多年…

YOLOv8目标检测:从理论到实战的飞跃之旅

目录一、YOLOv8,目标检测的新宠儿二、YOLOv8 核心探秘2.1 架构解析2.2 工作流程2.3 优势剖析三、实战项目开启3.1 环境搭建3.2 数据准备3.3 模型训练3.4 模型评估3.5 推理应用四、实战案例展示4.1 工业质检实例4.2 智能安防应用五、常见问题与解决方案5.1 显存不足5…

用AI制作表格实战:20个高频ChatExcel指令词,告别低效Excel操作

随着AI技术的不断成熟,越来越多职场人开始思考一个现实问题:怎么用AI制作表格,才能真正省时间、少加班? 最近,ChatExcel上线了全新的AI做表功能,精准击中了打工人在表格制作和数据处理上的痛点。 那么问题…

打破 NotebookLM 最后的限制:我写了个开源工具,把 PDF 瞬间变回可编辑 PPT!

前言:NotebookLM 很好,但生成的 PDF 让我很头秃 最近 Google 的 NotebookLM 彻底火了,尤其是它一键生成的演示文稿(Slides),逻辑清晰、排版精美。但作为一个打工人/学生党,在使用过程中有一个巨大的痛点: 它导…

力扣122 买卖股票的最佳时机II java实现

122.买卖股票的最佳时机II给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。然而,你可以在 同一天 多次买卖该股票,但要确…

STM32项目分享:图书馆环境监测系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 PCB图 五、程序设计 六、实验效果 ​ 七、包含内容 项目分享 一、前言 项目成品图片: 哔哩哔哩视频链接: https://www.bilibili.com/video/BV13PijBHEAv/?…

2026年矩阵系统避坑指南:市面主流软件真实横评,到底哪家好?

“矩阵系统哪家好?”这个问题在2026年的运营圈里,其实是在问:“怎么用最少的人,安全地管好最多的号,还能把钱赚了?”市面上的工具几百款,从几十块的群控软件到几十万的SaaS系统,水很…

2026年私域的八大挑战及发展方向

2026年,私域运营进入“合规化、专业化、价值化”的深水区,全域融合与AI技术的深度渗透,既放大了传统运营痛点,也催生了新的增长机遇。基于行业调研与新规动态,私域领域的八大挑战愈发清晰,而对应的破局方向…

7×24小时技术支持的售后服务系统有哪些?

在数字化转型的背景下 ,企业需要保障业务连续性 ,提供724小时的技术支持 。选择—家提供724小时技术支持的售后服务系统提供商 ,能够帮助企业提升售后服务效率 ,降低服务成本 ,提高客户满意度。在724小时技术支持售后服…

2026年矩阵系统选型图谱:5款主流软件的“性格画像”与适用场景匹配

在选择矩阵系统时,很多企业容易陷入“谁功能最多”的误区。实际上,没有最好的系统,只有最适合业务流派的工具。为了公平起见,我们选取了市面上5种不同定位的代表性产品,从核心场景、功能侧重及适用人群三个维度进行等量…

能对接电商系统的售后服务系统有哪些?

在互联网电商行业 ,售后服务系统需要与电商系统对接 ,实现业务协同 。选择—家能对接电商系统的售后服务系统提供商 ,能够帮助企业提升售后服务效率 ,降低服务成本 ,提高客户满意度。在电商对接售后服务系统领域 &…

APS概念-需求时间供应时间

一、核心概念解读这是 APS 系统中需求时间与供应时间的精细化配置规则,用来解决 ERP 仅按 “天” 跟踪订单、无法匹配生产实际小时 / 分钟级节奏的问题,通过精准的时间设置,确保供应与需求的无缝衔接。二、参数定义与默认值参数定义默认值需求…

APS概念-新订单开始日期延迟

一、核心概念解读新订单开始日期延迟是 APS 系统中为新插入的订单预留缓冲时间的参数,它会在订单正式排程前,提前一段固定的小时数来完成文书、采购、准备等前置工作,避免因紧急插单导致的生产混乱。二、关键作用与场景应对紧急插单当客户订单…

APS概念-可承诺量 / 承诺能力拉动容差

一、核心概念解读可承诺量 / 承诺能力拉动容差是 APS 系统在计算 ATP(可承诺量)和 CTP(承诺能力)时的关键参数,它定义了系统在寻找最优交付日期时的时间搜索范围,直接影响计划的精准性和计算效率。二、关键…

APS概念-ATP和CTP

一、ATP(Available to Promise,可承诺量)核心定义:指企业当前库存、在途生产和采购的物料中,尚未被承诺给客户的可用数量。它只关注物料数量,不考虑产能约束。计算逻辑:可用库存 计划生产量 - …

APS概念-供应耗用容差

一、核心概念解读供应耗用容差是 APS 系统中用于处理物料供应与需求时间匹配的灵活规则,它允许系统在物料 “实际可用日期” 之前,提前将供应分配给需求,从而避免因供应与需求日期的微小偏差导致计划中断。二、容差因子的含义容差因子用负数表…