千家信息网

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

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,今天给大家介绍一下redis的list数据类型相关命令分析及如何使用。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。li
千家信息网最后更新 2026年11月02日redis的list数据类型相关命令分析及如何使用

今天给大家介绍一下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) 1127.0.0.1:6379> lrange ids 0 -11) "1"127.0.0.1:6379> lpush ids 2(integer) 2127.0.0.1:6379> lrange ids 0 -11) "2"2) "1"

    rpush key value

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

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

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

    //元素3前插入0127.0.0.1:6379> linsert ids before 3 0(integer) 4127.0.0.1:6379> lrange ids 0 -11) "2"2) "1"3) "0"4) "3"//元素3后插入0127.0.0.1:6379> linsert ids after 3 4(integer) 5127.0.0.1:6379> lrange ids 0 -11) "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 -11) "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 -11) "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) 1127.0.0.1:6379> lrange ids 0 -11) "1"2) "0"

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

    127.0.0.1:6379> ltrim ids 0 0OK127.0.0.1:6379> lrange ids 0 -11) "1"

    修改命令

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

    127.0.0.1:6379> lset ids 0 0OK127.0.0.1:6379> lrange ids 0 -11) "0"

    阻塞弹出命令

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

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

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

    应用场景

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

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

    以上就是redis的list数据类型相关命令分析及如何使用的全部内容了,更多与redis的list数据类型相关命令分析及如何使用相关的内容可以搜索之前的文章或者浏览下面的文章进行学习哈!相信小编会给大家增添更多知识,希望大家能够支持一下!

    元素 命令 数据 结构 内存 阻塞 类型 分析 内容 右边 头部 尾部 底层 文章 存储 三个 下标 功能 区间 多个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 麻工互联网科技 互联网科技集团 善班互联网科技 奇酷互联网科技公司 伴你行互联网科技有限公司 成都仁贤领冠互联网科技有限公司 银川新华互联网科技学校地址 青岛中康互联网医疗科技有限公司 华服互联网科技官网 互联网还是高科技吗 荆州市昕露互联网络科技有限公司 威龙国际互联网科技公司 工业互联网等科技实现智能化赋能 为客找房互联网科技公司怎么样 厦门江牛科技互联网 互联网科技快讯热点 卡尔迅互联网科技有限公司 广西科技产业互联网是什么 科技互联网公司两年变化 科技互联网专业务虚会材料 广东万易互联网科技有限公司惠州分公司 互联网巨头反垄断金融科技 互联网科技资迅 深圳互联网科技公司 猪兼强互联网科技 迪茉互联网科技 来此购互联网科技有限公司 企晟互联网信息科技有限公司 徐州市互联网科技有限公司 互联网科技收购价值
    0