Redis——list类型详解

这篇具有很好参考价值的文章主要介绍了Redis——list类型详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概要

Redis中的list类型相当于双端队列,支持头插,头删,尾插,尾删,并且列表中的内容是可以重复的。

如果搭配使用rpush和lpop,那么就相当于队列
如果搭配使用rpush和rpop,那么就相当于栈
Redis——list类型详解,数据库,redis,redis,list,数据库

lpush

向列表中头插一个或多个元素,返回list的长度。如果key已经存在,并且对应的value不是list类型,则报错

当插入多个元素时,是一次头插,例如插入1,2,3,4,那么列表中是4,3,2,1
Redis——list类型详解,数据库,redis,redis,list,数据库
演示:
Redis——list类型详解,数据库,redis,redis,list,数据库

lrange

查看list指定区间内的元素,前闭后闭,支持负数(-1就相当于倒数第一个元素),下标从0开始,因此查看全部元素就是0,-1
Redis——list类型详解,数据库,redis,redis,list,数据库演示:
Redis——list类型详解,数据库,redis,redis,list,数据库
展示的元素前面的序号并不是下标,而是结果集专用的序号

需要注意的是,如果我们给的下标超出了list的范围,如果是其他语言,可能就会报错或者抛出异常。但是在Redis中会尽可能的获取对应的内容,这体现了Redis的鲁棒性
Redis——list类型详解,数据库,redis,redis,list,数据库

lpushx

从左侧插入,当key不存在,用法和lpush一致,当key存在,则插入失败,返回0
Redis——list类型详解,数据库,redis,redis,list,数据库
演示:
Redis——list类型详解,数据库,redis,redis,list,数据库

Rpush

向列表中尾插一个或多个元素,返回list的长度。如果key已经存在,并且对应的value不是list类型,则报错
Redis——list类型详解,数据库,redis,redis,list,数据库
演示:
Redis——list类型详解,数据库,redis,redis,list,数据库

rpushx

从右侧插入,当key不存在,用法和lpush一致,当key存在,则插入失败,返回0
Redis——list类型详解,数据库,redis,redis,list,数据库
演示:
Redis——list类型详解,数据库,redis,redis,list,数据库

lpop

头删list中的元素,返回取出的元素的值。当列表为空则返回nil
Redis——list类型详解,数据库,redis,redis,list,数据库
演示:
Redis——list类型详解,数据库,redis,redis,list,数据库

rpop

尾删list中的元素,返回取出的元素的值。当列表为空则返回nil
Redis——list类型详解,数据库,redis,redis,list,数据库
演示:
Redis——list类型详解,数据库,redis,redis,list,数据库

lindex

获取到指定位置的元素,时间复杂度为O(N),如果下标非法则返回nil
Redis——list类型详解,数据库,redis,redis,list,数据库

演示:
Redis——list类型详解,数据库,redis,redis,list,数据库

linsert

在list的指定处插入元素,如果是before就插入在基准值前面,如果是after就插入到基准值后面,基准值是在list中存在的值而非下标,时间复杂度是O(N)

Redis——list类型详解,数据库,redis,redis,list,数据库
演示:
Redis——list类型详解,数据库,redis,redis,list,数据库
如果存在多个相同的基准值,那么只插入到第一个基准值处

llen

获取列表的长度,如果key不存在则返回0

Redis——list类型详解,数据库,redis,redis,list,数据库

lrem

删除指定的值,count为要删除的个数

count的值 作用
count > 0 从头到尾,删除count个指定的元素
count < 0 删除所有指定的元素
count = 0 从尾到头,删除count个指定的元素

Redis——list类型详解,数据库,redis,redis,list,数据库
演示:
Redis——list类型详解,数据库,redis,redis,list,数据库

ltrim

保留列表中start和stop之间的元素,删除两边的元素

Redis——list类型详解,数据库,redis,redis,list,数据库
演示:
Redis——list类型详解,数据库,redis,redis,list,数据库

lset

根据指定的下标,修改元素,如果下标越界,则报错
Redis——list类型详解,数据库,redis,redis,list,数据库
演示:
Redis——list类型详解,数据库,redis,redis,list,数据库

blpop/brpop

类似于阻塞队列,如果队列为空,尝试出队列,阻塞队列根据阻塞时间产生阻塞,期间Redis可以执行其他命令,直到队列不空,返回元素(如果超时了就返回nil)

命令中可以设置多个key,从左到右遍历key,哪个key的list中不空,则返回元素
Redis——list类型详解,数据库,redis,redis,list,数据库
演示:
队列不为空:
Redis——list类型详解,数据库,redis,redis,list,数据库
队列为空时:
先设置过期时间是100s
Redis——list类型详解,数据库,redis,redis,list,数据库
这边的客户端就阻塞了,启动另一个服务器,往队列里插入元素
Redis——list类型详解,数据库,redis,redis,list,数据库
这个服务器插入完元素,上一个服务器就返回元素了
Redis——list类型详解,数据库,redis,redis,list,数据库

内部编码

编码方式 细节
ziplist 压缩列表 列表元素个数小于512个同时每个元素的长度小于64字节
linkedlist 俩表 不满足上述条件

上述编码方式是老版本的Redis使用的,新版本的Redis使用了quicklist,相当于链表和压缩列表的结合,整体是一个链表,每个链表的节点是一个压缩链表
Redis——list类型详解,数据库,redis,redis,list,数据库

应用场景

作为数组存储多个元素

例如sql中有下面这两张表
Redis——list类型详解,数据库,redis,redis,list,数据库
那么在Redis中可以通过以下关联关系进行组织数据
Redis——list类型详解,数据库,redis,redis,list,数据库

作为消息队列

Redis——list类型详解,数据库,redis,redis,list,数据库
这三个消费者谁先执行brpop命令,谁就可以先拿到新来的元素文章来源地址https://www.toymoban.com/news/detail-655785.html

到了这里,关于Redis——list类型详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Redis数据类型(list\set\zset)

    \\\"maybe it\\\'s why\\\"          列表类型是⽤来存储多个 有序 的字符串,列表中的每个字符串称为元素(element),⼀个列表最多可以存储个2^32 - 1个元素。在Redis中,可以对列表两端插⼊(push)和弹出(pop),还可以获取指定范围的元素列表、获取指定索引下标的元素等。列表是

    2024年02月11日
    浏览(41)
  • Redis的五种数据类型(string、hash 、list、set、zset)

                     Redis 提供了丰富的数据类型,常见的有五种: String(字符串),Hash(哈希),List(列表),Set(集合)、Zset(有序集合) 。         String 是最基本的 key-value 结构,key 是唯一标识,value 是具体的值,value其实不仅是字符串, 也可以是数字(整

    2024年01月25日
    浏览(49)
  • 【Redis】内存数据库Redis进阶(Redis哨兵集群)

    基于 Redis 集群解决单机 Redis 存在的四大问题:   搭建一个三节点形成的 Sentinel 集群,来监管 Redis 主从集群。   【Redis】内存数据库Redis进阶(Redis主从集群)   架构图: 三个sentinel实例信息: 节点 IP PORT s1 192.168.150.101 27001 s2 192.168.150.101 27002 s3 192.168.150.101 27003 之前

    2024年02月14日
    浏览(44)
  • Redis 数据类型及其常用命令一(string、list、set、zset、hash)

    1、简介         Redis 的常用数据类型有十种,分别为:string、list、set、zset、hash、geo、hyperloglog、bitmap、bitfield、stream。熟练使用各种数据类型,能够快速结合场景进行使用。 注:我们所说的数据类型是指 value 的数据类型,key 都是字符串。 所有类型的命令查看:help @数据类

    2024年03月13日
    浏览(57)
  • Redis之数据类型String、List、Hash、Set、Sorted Set(详细)

    一、String数据类型 1、SET/GET/APPEND/STRLEN (1) APPEND (2) SET/STRLEN 2、 INCR/ DECR/INCRBY/DECRBY (1)INCR/ DECR (2) INCRBY/DECRBY INCRBY key increment:key值增加指定的整数DECRBY key decrement:key值减少指定的整数  3、GETSET 4、 SETEX  5、SETNX 6、MSET/MGET/MSETNX  二、List数据类型 1、LPUSH/LPUSHX/

    2024年02月11日
    浏览(42)
  • Redis缓存数据库

    目录 一、概述 1、Redis  2、Redis的安装 Redis Windows环境设置 3、String: 字符串 3.1、字符串 3.2、数值 3.3、bitmap 4、Hash: 散列 5、List: 列表 6、Set: 集合 7、Sorted Set: 有序集合 常识: 磁盘:1.寻址:ms(毫秒)2.带宽:MB/s 内存:1.寻址:ns    (纳秒) 2.带宽:GB/s 秒--毫秒--微妙--纳秒

    2024年02月04日
    浏览(58)
  • Redis内存数据库

    Redis内存数据库 NoSQL数据库简介 Redis简介 Redis应用场景 windows下安装和使用Redis 在linux下安装redis Redis数据可视化RedisDesktopManager Redis配置 Redis 数据类型 Redis 字符串(String) Redis 哈希(Hash) Redis 列表(List) Redis 集合(Set) Redis 有序集合(sorted set) Redis key命令 Redis连接命令 Redis服务器命令

    2024年02月09日
    浏览(39)
  • 1 - 搭建Redis数据库服务器|LNP+Redis

    数据库服务软件分为2类: 关系型数据库服务软件 简称 RDBMS 按照预先设置的组织结构 将数据存储在物理介质上 数据之间可以做关联操作 非关系型数据库服务软件 简称 NoSQL 不仅仅是SQL 不需要预先定义数据存储结构 每条记录可以有不同的数据类型和字段个数 只需要 key valu

    2024年01月25日
    浏览(58)
  • 126、高频Redis面试题:如何保证Redis和数据库数据一致性

    问题:如果数据库中的某条数据放入缓存后,又马上被更新了,那我们应该如何更新缓存 缺点: 如果先更新缓存成功,在更新数据库的时候失败,这时候会导致数据不一致;缓存的作用是不是临时将我们数据保存在内存,便于提高查询速度;但是如果某条数据在数据库中都

    2024年02月13日
    浏览(40)
  • Redis 数据库 NoSQL

    目录 一、NoSQL 二、为什么会出现NoSQL技术 三、NoSQL的类别 键值(Key-Value)存储数据库 列存储数据库 文档型数据库 图形(Graph)数据库 四、NoSQL适应场景 五、在分布式数据库中CAP原理 1、CAP 2、BASE NoSQL(Not Only SQL)即不仅仅是SQL,泛指非关系型的数据库,它可以作为关系型数

    2024年02月12日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包