Redis List 数据类型
Redis List 数据类型List 本质是按插入顺序排列的字符串双向链表。一、基础概念List 到底是什么1. 核心特性有序性元素严格按照插入顺序排列支持正向索引从左到右 0,1,2…和负向索引从右到左 -1,-2…-1代表最后一个元素。可重复同一个值可以多次插入没有去重能力。双向高效操作列表头部左端/left和尾部右端/right的插入、删除操作都是O(1)时间复杂度性能极高。随机访问慢按下标查找中间元素、在中间位置插入删除是O(n)列表越大性能越差。元素类型只能存字符串单个元素最大 512MB。✅ 实际开发定位优先用它做「两端操作的有序集合」绝对不要用它做随机查找。二、核心命令详解附开发使用频率1. 两端插入高频核心LPUSH左端头部插入元素语法LPUSH key value [value ...]作用从列表最左边插入一个或多个元素返回插入后的列表总长度示例# 插入3个元素从左依次插入最终顺序是 1003,1002,1001 LPUSH user:1:history 1001 1002 1003常用度★★★★★开发提示批量插入比循环单次插入性能高几倍尽量一次传多个值。RPUSH右端尾部插入元素语法RPUSH key value [value ...]作用从列表最右边插入一个或多个元素返回插入后的列表总长度示例# 插入3个任务最终顺序是 task1,task2,task3 RPUSH order:pay:queue task1 task2 task3常用度★★★★★2. 两端弹出删除并返回元素LPOP左端弹出元素语法LPOP key [count]作用移除并返回列表最左边的元素列表为空返回 nilRedis 6.2 支持 count 参数一次弹出多个示例LPOP order:pay:queue # 返回 task1列表变为 [task2, task3]常用度★★★★★RPOP右端弹出元素语法RPOP key [count]作用移除并返回列表最右边的元素常用度★★★★★3. 查询类命令LLEN获取列表长度语法LLEN key作用返回列表元素总数O(1) 复杂度Redis 内部维护了长度字段直接读取示例LLEN order:pay:queue # 返回 2常用度★★★★★LRANGE获取指定范围元素语法LRANGE key start stop作用获取索引[start, stop]闭区间内的所有元素是最常用的列表查询命令示例# 获取全部元素生产环境禁止对大列表使用 LRANGE order:pay:queue 0 -1 # 获取前2个元素第1页每页10条就是 0 9 LRANGE order:pay:queue 0 1常用度★★★★★开发提示-1代表最后一个元素-2代表倒数第二个stop 超出列表长度不会报错自动取到末尾。LINDEX获取指定索引元素语法LINDEX key index作用返回指定下标位置的元素O(n) 复杂度需要从头遍历到目标位置常用度★★☆☆☆开发提示大列表严禁频繁使用列表越长性能越差。4. 删除 与 裁剪LREM删除指定值的元素语法LREM key count valuecount 0从左往右删除 count 个匹配值count 0从右往左删除 |count| 个匹配值count 0删除所有匹配值示例# 从左往右删除2个值为 1001 的元素 LREM user:1:history 2 1001常用度★★★☆☆开发提示需要遍历列表匹配O(n) 复杂度大列表慎用。LTRIM裁剪列表定长列表神器语法LTRIM key start stop作用只保留[start, stop]范围内的元素其余全部删除示例# 只保留最近20条浏览记录超出的全部删除 LTRIM user:1:history 0 19常用度★★★★☆和 LPUSH 配合实现最新 N 条记录比如浏览历史、最新评论性能接近 O(1)。新增浏览商品id 1001放到列表头部LPUSH user:100:view1001裁剪只保留下标0~4也就是最新5条LTRIM user:100:view045. 阻塞式弹出消息队列核心BLPOP / BRPOP阻塞版弹出语法BRPOP key [key ...] timeout作用列表为空时阻塞等待直到有元素插入或超时有元素时立即弹出返回timeout 单位是秒设为 0 表示永久阻塞支持同时监听多个 key哪个列表先有元素就返回哪个多个消费者同时监听时先到先得不会重复消费示例# 阻塞等待支付队列任务最多等30秒超时返回nil BRPOP order:pay:queue 30常用度★★★★☆开发提示实现简单消息队列的核心命令比轮询查询性能高得多。RPOPLPUSH / BRPOPLPUSH原子移动元素语法RPOPLPUSH source destination作用原子操作从 source 列表右端弹出元素插入到 destination 列表左端返回该元素常用度★★★☆☆开发场景实现「可靠消息队列」——把消息从「待处理队列」移到「处理中队列」防止消费者宕机导致消息丢失。三、底层实现原理理解性能的关键Redis 3.2 之后List 的底层编码统一为quicklist快速列表替代了早期的 ziplist linkedlist 两套编码。1. quicklist 是什么本质是「双向链表 每个链表节点是一个压缩列表ziplist」的混合结构链表的每个节点叫quicklistNode每个节点内部是一段连续内存的 ziplist存多个元素节点之间用双向指针连接保证头尾插入删除 O(1)节点内部用压缩列表存储减少内存碎片提升空间利用率2. 对开发的意义头尾操作永远是 O(1)不管列表多大LPUSH/RPUSH/LPOP/RPOP 都极快放心使用。中间操作是 O(n)LINDEX、LSET、LINSERT、中间位置 LREM 都需要遍历列表越大越慢。小列表内存极省元素少时整个列表就是一个 ziplist连续内存占用非常小。可配置优化通过list-max-ziplist-size可以调整每个 ziplist 的大小平衡空间和性能。四、实际开发中的经典应用场景这部分是开发最关心的内容每个场景都讲清楚「实现方式 优缺点 适用边界」。场景1轻量级消息队列这是 List 最广泛的用途之一适合非核心异步任务。实现方式生产者LPUSH把任务投递到队列消费者BRPOP阻塞等待获取任务# 生产者投递支付回调任务 LPUSH order:pay:callback order_1001 order_1002 # 消费者永久阻塞等待任务 BRPOP order:pay:callback 0进阶可靠队列避免消息丢失用RPOPLPUSH做消息中转消费前原子移动到「处理中队列」消费成功后从处理中队列删除消费失败可以从重试队列恢复# 原子操作待处理 → 处理中 RPOPLPUSH order:pay:callback order:pay:processing # 消费成功后删除 LREM order:pay:processing 1 order_1001适用与不适用✅ 适用日志上报、短信发送、站内信、非核心数据同步等可容忍少量丢失的场景❌ 不适用订单支付、库存扣减等核心业务需要广播、延迟消息、死信队列的场景开发提示核心业务请用 RabbitMQ、Kafka 等专业 MQRedis List 只做轻量补充。场景2最新N条记录 / 时间线比如用户浏览历史、文章最新评论、朋友圈动态、操作日志。实现方式新记录用LPUSH插入头部配合LTRIM固定长度天然按时间倒序排列。# 用户浏览商品新增记录 LPUSH user:100:browse_history product_501 # 只保留最近20条超出自动删除 LTRIM user:100:browse_history 0 19 # 查看浏览历史 LRANGE user:100:browse_history 0 -1优势插入和裁剪都是接近 O(1)性能极高天然按时间倒序不用额外排序内存占用小开发提示列表里只存 ID不要存大对象详情数据根据 ID 去数据库或缓存查。场景3栈 / 双端队列栈先进后出LPUSH LPOP或者RPUSH RPOP队列先进先出LPUSH RPOP或者RPUSH LPOP双端队列两端都可进出灵活适配业务场景4浅分页列表比如商品评论、公告列表按时间倒序分页第1页LRANGE comment:100 0 9第2页LRANGE comment:100 10 19开发提示只适合小数据量、分页不深的场景。深分页的 LRANGE 需要遍历到起始位置性能会下降大数据量分页建议用 Sorted Set 或数据库。五、生产环境避坑指南禁止大列表单个 List 建议不超过 1 万条元素过大的列表会占用大量内存操作时容易阻塞 Redis。数据量大请分 key 或换其他数据结构。禁止全量查询大列表绝对不要对大列表执行LRANGE key 0 -1会导致 Redis 长时间阻塞。尽量不操作中间元素LINDEX、LSET、LINSERT、中间位置LREM都是 O(n)业务上尽量只操作两端。阻塞命令设置超时BRPOP不要无脑设 0 永久阻塞设置合理超时时间避免连接泄漏配合连接池使用。批量插入减少 IO用LPUSH/RPUSH一次传多个值比循环单次插入减少大量网络开销。定长用 LTRIM 不用 LREMLTRIM性能远高于循环删除做最新列表优先用裁剪。

相关新闻

WuWa-Mod终极指南:如何轻松解锁《鸣潮》无限游戏乐趣

WuWa-Mod终极指南:如何轻松解锁《鸣潮》无限游戏乐趣

WuWa-Mod终极指南:如何轻松解锁《鸣潮》无限游戏乐趣 【免费下载链接】wuwa-mod Wuthering Waves pak mods 项目地址: https://gitcode.com/GitHub_Trending/wu/wuwa-mod 还在为《鸣潮》中的各种限制感到困扰吗?想要体验技能无冷却、体力无限的畅…

2026/8/5 20:34:06 阅读更多 →
老照片AI修复:让褪色记忆重获新生的完整指南

老照片AI修复:让褪色记忆重获新生的完整指南

老照片AI修复:让褪色记忆重获新生的完整指南 【免费下载链接】Bringing-Old-Photos-Back-to-Life Bringing Old Photo Back to Life (CVPR 2020 oral) 项目地址: https://gitcode.com/gh_mirrors/br/Bringing-Old-Photos-Back-to-Life 你是否曾翻出尘封的老照…

2026/8/5 20:34:05 阅读更多 →
如何用APatch解锁Android内核级Root权限:技术实践指南

如何用APatch解锁Android内核级Root权限:技术实践指南

如何用APatch解锁Android内核级Root权限:技术实践指南 【免费下载链接】APatch The patching of Android kernel and Android system 项目地址: https://gitcode.com/gh_mirrors/ap/APatch 你是否曾因Android系统限制而无法充分发挥设备潜力?当传…

2026/8/6 22:05:10 阅读更多 →

最新新闻

Pixie性能优化指南:提升PHP数据库操作速度的10个技巧

Pixie性能优化指南:提升PHP数据库操作速度的10个技巧

Pixie性能优化指南:提升PHP数据库操作速度的10个技巧 【免费下载链接】pixie Database query builder for PHP, framework agnostic, lightweight and expressive. 项目地址: https://gitcode.com/gh_mirrors/pixie3/pixie Pixie是一款轻量级、表达力强的PHP…

2026/8/6 23:01:52 阅读更多 →
PARSeq核心技术解密:Permutation Language Modeling如何实现无外部LM的双向推理

PARSeq核心技术解密:Permutation Language Modeling如何实现无外部LM的双向推理

PARSeq核心技术解密:Permutation Language Modeling如何实现无外部LM的双向推理 【免费下载链接】parseq Scene Text Recognition with Permuted Autoregressive Sequence Models (ECCV 2022) 项目地址: https://gitcode.com/gh_mirrors/pa/parseq PARSeq作为…

2026/8/6 23:01:52 阅读更多 →
音乐推荐系统架构:基于Pyechonest构建你的第一个推荐引擎

音乐推荐系统架构:基于Pyechonest构建你的第一个推荐引擎

音乐推荐系统架构:基于Pyechonest构建你的第一个推荐引擎 【免费下载链接】pyechonest Python client for the Echo Nest API 项目地址: https://gitcode.com/gh_mirrors/py/pyechonest Pyechonest是一个开源Python库,为Echo Nest API提供接口&am…

2026/8/6 23:01:52 阅读更多 →
AVA-AI-Voice-Agent-for-Asterisk安全最佳实践:保护语音数据与API密钥全攻略

AVA-AI-Voice-Agent-for-Asterisk安全最佳实践:保护语音数据与API密钥全攻略

AVA-AI-Voice-Agent-for-Asterisk安全最佳实践:保护语音数据与API密钥全攻略 【免费下载链接】AVA-AI-Voice-Agent-for-Asterisk An open-source AI Voice Agent that integrates with Asterisk/FreePBX using Audiosocket/RTP technology 项目地址: https://gitc…

2026/8/6 23:01:52 阅读更多 →
CentOS 7常见命令缺失问题解决方案大全

CentOS 7常见命令缺失问题解决方案大全

1. CentOS 7常见"command not found"问题全解析刚接触CentOS 7的新手经常会遇到各种"command not found"的报错提示,这其实是Linux系统中最基础也最让人头疼的问题之一。作为一个从CentOS 6时代就开始折腾服务器的老运维,我整理了一…

2026/8/6 23:01:52 阅读更多 →
远心镜头原理与应用:精密测量的光学解决方案

远心镜头原理与应用:精密测量的光学解决方案

1. 远心镜头基础认知:为什么它如此特别?第一次接触远心镜头是在2015年的一次半导体检测设备改造项目中。当时产线上的传统镜头在测量0.2mm以下的芯片引脚时,总是出现5μm的测量波动,而改用远心镜头后直接降到了1μm以内。这种神奇…

2026/8/6 23:00:51 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延,无需电控启动,是建筑被动消防系统核心构件,行业依托新规管控、城市更新、工业安全升级迎来稳定扩容,整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/6 22:02:27 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/6 22:02:27 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/6 22:02:28 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →