当前位置:

首页 > 编程开发 > redis的list数据类型相关命令分析及如何使用

redis的list数据类型相关命令分析及如何使用

Listary 5 Pro
Listary 5 Pro

Listary 5是一款最快的文件搜索工具之一。跟其他工具相比Listary更强大的的地方是跟您工作流程的无缝集成:无论您是在资源管理器中整理文件,或者是正在Photoshop中进行设计,任何情况下只要您需要访问文件,Listary就能将您需要的结果通过您喜欢的方式快速且精确的展示

立即下载
2026-08-22
系统应用 系统工具 Listary 优化维护 路径

list列表简介list是简单的字符串列表(说通俗点,存储的还是字符串),按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边),个列表最多可以包含^32-1个元素(每个列表超过40亿个元素)。Redis中的list和Java中的LinkedList很像,底层都是一种链表结构,list的插入和删除操作非常快,时间复杂度为0(1),不像数组结构插入、删除操作需要移动数据。像归像,但是redis中的list底层可不是一个双向链表那么简单。当数据量较少的时候它的底层存储结构为一块连续内存,称之

本文目录

      list列表简介

      • list是简单的字符串列表(说通俗点,存储的还是字符串),按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边),个列表最多可以包含^32-1个元素(每个列表超过40亿个元素)。

      • Redis中的list和Java中的LinkedList很像,底层都是一种链表结构,list的插入和删除操作非常快,时间复杂度为 0(1),不像数组结构插入、删除操作需要移动数据。像归像,但是redis中的list底层可不是一个双向链表那么简单。

      • 当数据量较少的时候它的底层存储结构为一块连续内存,称之为ziplist(压缩列表),它将所有的元素紧挨着一起存储,分配的是一块连续的内存;当数据量较多的时候将会变成quicklist(快速链表)结构。

      • 可单纯的链表也是有缺陷的,链表的前后指针prev和next会占用较多的内存,会比较浪费空间,而且会加重内存的碎片化。在redis 3.2之后就都改用ziplist+链表的混合结构,称之为quicklist(快速链表)。

      常用命令

      添加命令

      lpush key value

      从左边插入元素(将一个或多个值插入到列表头部)

      127.0.0.1:6379> lpush ids 1
      (integer) 1
      127.0.0.1:6379> lrange ids 0 -1
      1) "1"
      127.0.0.1:6379> lpush ids 2
      (integer) 2
      127.0.0.1:6379> lrange ids 0 -1
      1) "2"
      2) "1"

      rpush key value

      从右边插入元素(将一个或多个值插入到列表的尾部(最右边))

      127.0.0.1:6379> rpush ids 3
      (integer) 3
      127.0.0.1:6379> lrange ids 0 -1
      1) "2"
      2) "1"
      3) "3"

      linsert key BEFORE|AFTER pivot value
      向某个元素前/后插入元素,返回结果为当前列表长度,注意列表不存在或者指定元素不存在列表中时,都将不执行任何操作。

      //元素3前插入0
      127.0.0.1:6379> linsert ids before 3 0
      (integer) 4
      127.0.0.1:6379> lrange ids 0 -1
      1) "2"
      2) "1"
      3) "0"
      4) "3"
      //元素3后插入0
      127.0.0.1:6379> linsert ids after 3 4
      (integer) 5
      127.0.0.1:6379> lrange ids 0 -1
      1) "2"
      2) "1"
      3) "0"
      4) "3"
      5) "4"

      查询命令

      lrange key start end
      获取列表中指定范围内的元素列表;若start值大于列表end值则返回空列表
      如上已经展示过了

      lindex key index
      获取列表指定索引下标的元素

      127.0.0.1:6379> lindex ids 0
      "2"
      127.0.0.1:6379> lindex ids -1
      "4"

      llen key
      获取列表长度;列表不存在则返回0

      127.0.0.1:6379> llen ids
      (integer) 5

      弹出/删除命令

      lpop key
      从列表左侧弹出元素并返回头部元素

      127.0.0.1:6379> lpop ids
      "2"
      127.0.0.1:6379> lrange ids 0 -1
      1) "1"
      2) "0"
      3) "3"
      4) "4"

      rpop key
      从列表右侧弹出元素并返回尾部元素

      127.0.0.1:6379> rpop ids
      "4"
      127.0.0.1:6379> lrange ids 0 -1
      1) "1"
      2) "0"
      3) "3"

      lrem key count value
      从列表中找到等于value的元素进行删除,根据count的不同分为三种情况:
      count > 0,从表头开始向表尾,移除数量为count个元素;
      count < 0,从表尾开始向表头,移除数量为count的绝对值个元素;
      count = 0,移除表中所有与 value 相等的值

      127.0.0.1:6379> lrem ids 0 3
      (integer) 1
      127.0.0.1:6379> lrange ids 0 -1
      1) "1"
      2) "0"

      ltrim key start end
      对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除

      127.0.0.1:6379> ltrim ids 0 0
      OK
      127.0.0.1:6379> lrange ids 0 -1
      1) "1"

      修改命令

      lset key index value
      修改指定下标的元素的值设置为value

      127.0.0.1:6379> lset ids 0 0
      OK
      127.0.0.1:6379> lrange ids 0 -1
      1) "0"

      阻塞弹出命令

      blpop key [key …] timeout
      移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时(单位秒)或发现可弹出元素为止

      brpop key [key …] timeout
      移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
      演示:
      开启三个reids连接窗口,第一个执行blpop ,第二个执行brpop ,第三个执行添加:
      可以看到窗口1和2执行完都已经阻塞在这里,这是因为ids中没有元素

      redis的list数据类型相关命令分析及如何使用

      redis的list数据类型相关命令分析及如何使用

      窗口3执行添加:lpush ids 1 2 3 4 5 6
      可以看到窗口1和2立即弹出对应元素:

      redis的list数据类型相关命令分析及如何使用

      redis的list数据类型相关命令分析及如何使用

      应用场景

      消息队列:lpop和rpush(或者反过来,lpush和rpop)能实现队列的功能

      朋友圈的点赞列表、评论列表、排行榜:lpush命令和lrange命令能实现最新列表的功能,每次通过lpush命令往列表里插入新的元素,然后通过lrange命令读取最新的元素列表。

      本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
      作者最新文章
      编程开发
      相关文章 更多
      listview的优化 基础知识整理:新手先看这篇
      listview的优化 基础知识整理:新手先看这篇

      ListView优化的核心在于视图复用机制,避免在getView中频繁创建视图。使用ViewHolder模式可减少findViewById耗时。数据与图片应异步加载,滑动时暂停加载以提升流畅度。简化列表项布局层级,减少嵌套。大数据集采用分页加载,并优先使用精确的局部数据更新方法,避免全局刷新。

      css列表标签list与表格标签table详解
      css列表标签list与表格标签table详解

      CSS列表样式通过list-style-type属性控制标记类型,list-style-image属性控制标记图像,list-style-position属性控制标记位置,三者可合并简写为list-style属性;表格样式使用border属性设置边框,border-collapse属性合并相邻边框,并支持宽度、高度及文本对齐设置,从而使页面结构清晰美观。

      php72w redis,docker php7安装php-redis
      php72w redis,docker php7安装php-redis

      在Docker环境下为PHP安装Redis扩展:手动编译需下载源码、安装phpize、配置编译并安装,生成redis.so并在php.d目录新建redis.ini加载,重启PHP-FPM;也可直接yum安装php72w-pecl-redis,免手动编译。

      php 如何配置 redis,php 如何设置redis
      php 如何配置 redis,php 如何设置redis

      配置PHP的Redis扩展:先安装Redis服务,从GitHub下载phpredis源码,用phpize编译安装,修改php.ini添加extension=redis.so,重启php-fpm或Apache,通过phpinfo验证并连接Redis。

      c++如何将结构体序列化为Redis兼容的RESP协议格式【深度】
      c++如何将结构体序列化为Redis兼容的RESP协议格式【深度】

      C++结构体无法直接序列化为RESP协议,需手动将字段映射为*N数组嵌套$lenbulkstring形式。整数需转换为字符串并加:前缀,空字符串用$0\r\n,null用$-1\r\n。长度计算需精确到字节数,特别注意二进制安全,同时确保字段顺序与结构体定义一致。

      如何在Golang架构中部署Redict作为高能数据临时存储中转站
      如何在Golang架构中部署Redict作为高能数据临时存储中转站

      Redis作为跨服务临时状态枢纽,需按消息队列、缓存和原子状态三重角色设计。选型用List实现任务分发及延迟重试,Stream用于事件广播与位点回溯。go-redis/v8需配置MinIdleConns、MaxRetries及超时。数据写入应JSON序列化并带type标签、设合理TTL、将关键字段提至顶层。消费通过原子GET+DEL或processedkey

      TP8.0 高并发下库存超卖?Redis 原子递减结合数据库乐观锁控制
      TP8.0 高并发下库存超卖?Redis 原子递减结合数据库乐观锁控制

      在高并发秒杀场景下,利用Redis的减库存原子操作预扣减库存拦截超卖请求,再通过数据库乐观锁(版本号与库存校验)确保最终一致性,异常时回滚Redis库存并借助Lua脚本保证原子性,从而有效防止库存超卖。

      如何在 Go 中利用 go-redis 执行 Lua 脚本优化逻辑
      如何在 Go 中利用 go-redis 执行 Lua 脚本优化逻辑

      在Go中使用go-redis执行Lua脚本可借助原子性解决竞态问题,通过redis.Script封装脚本并自动处理SHA1缓存与重试。需注意KEYS必须为非空切片且所有键在Cluster模式下落在同一slot,ARGV以字符串传入并由tonumber转换。返回值需先检查错误再调用Val(),避免panic。

      TP6.0 基于 Redis SetNX 实现的简单互斥锁机制【并发】
      TP6.0 基于 Redis SetNX 实现的简单互斥锁机制【并发】

      先看一个典型场景:电商秒杀、库存扣减、定时任务重复调度——这些并发冲突在 TP6 应用里屡见不鲜。用 Redis 的 SETNX 做互斥锁,确实是轻量又直接的方案,但“能用”和“稳妥”之间,隔着三层硬功夫:原子加锁、身份校验、合理超时。这三条,差一条就翻车。 很多人第一次上手,直接写 SETNX 加

      TP6.0 如何处理高并发抢购?Redis 原子锁与队列削峰详解【秒杀】
      TP6.0 如何处理高并发抢购?Redis 原子锁与队列削峰详解【秒杀】

      高并发抢购中,Redis的DECR原子操作可安全扣库存;配合think-queue异步削峰,接口仅扣库存和推消息;分布式锁需用SETNXEX加唯一标识,释放时用Lua脚本校验;成功资格后须以数据库事务双写为准,失败时补回Redis库存。

      查看更多
      精品专题 更多
      装机必备
      装机必备

      正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

      Windows
      Windows

      正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

      PDF教程
      PDF教程

      正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

      Mac软件 更多
      讯飞智作 网页版
      讯飞智作 网页版
      Windows/ macOS/ Linux

      讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

      火山引擎 网页版
      火山引擎 网页版
      Windows/ macOS/ Linux

      火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

      Aperty macOS版
      Aperty macOS版
      macOS

      Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

      WINDOWS 更多
      讯飞智作 网页版
      讯飞智作 网页版
      Windows/ macOS/ Linux

      讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

      火山引擎 网页版
      火山引擎 网页版
      Windows/ macOS/ Linux

      火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

      PixTV 网页版
      PixTV 网页版
      Windows

      PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。

      即将离开本站
      您即将前往第三方网站,请确认是否继续?