Redis---List数据类型操作

redis 数据库 的 list数据类型 操作 list 类型 list类型 是有索引 有顺序的 可以有重复的数据 而 hash类型是 没有索引 没有顺序的 list类型因为有索引,查询快,底层使用双向链表存储结构 list 类型 的 操作 指令 添加/修改数据 lpush key value1 [value2] …… 从左边添加 l 是 left 左边的意思 rpush key value1 [value2] ……从右边添加 r 是 right右边的意思 可以一次 加添、修改多个数据 获取数据 lrange key start stop 是用 阅读详情

一、概述:

在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。List中可以包含的最大元素数量是4294967295。

从元素插入和删除的效率视角来看,如果我们是在链表的两头插入或删除元素,这将会是非常高效的操作,即使链表中已经存储了百万条记录,该操作也可以在常量时间内完成。然而需要说明的是,如果元素插入或删除操作是作用于链表中间,那将会是非常低效的。相信对于有良好数据结构基础的开发者而言,这一点并不难理解。

二、相关命令列表:

命令原型时间复杂度命令描述返回值
LPUSH key value [value …]O(1)在指定Key所关联的List Value的头部插入参数中给出的所有Values。如果该Key不存在,该命令将在插入之前创建一个与该Key关联的空链表,之后再将数据从链表的头部插入。如果该键的Value不是链表类型,该命令将返回相关的错误信息。插入后链表中元素的数量。
LPUSHX key valueO(1)仅有当参数中指定的Key存在时,该命令才会在其所关联的List Value的头部插入参数中给出的Value,否则将不会有任何操作发生。插入后链表中元素的数量。
LRANGE key start stopO(S+N)时间复杂度中的S为start参数表示的偏移量,N表示元素的数量。该命令的参数start和end都是0-based。即0表示链表头部(leftmost)的第一个元素。其中start的值也可以为负值,-1将表示链表中的最后一个元素,即尾部元素,-2表示倒数第二个并以此类推。该命令在获取元素时,start和end位置上的元素也会被取出。如果start的值大于链表中元素的数量,空链表将会被返回。如果end的值大于元素的数量,该命令则获取从start(包括start)开始,链表中剩余的所有元素。返回指定范围内元素的列表。
LPOP keyO(1)返回并弹出指定Key关联的链表中的第一个元素,即头部元素,。如果该Key不存,返回nil。链表头部的元素。
LLEN keyO(1)返回指定Key关联的链表中元素的数量,如果该Key不存在,则返回0。如果与该Key关联的Value的类型不是链表,则返回相关的错误信息。链表中元素的数量。
LREM key count valueO(N)时间复杂度中N表示链表中元素的数量。在指定Key关联的链表中,删除前count个值等于value的元素。如果count大于0,从头向尾遍历并删除,如果count小于0,则从尾向头遍历并删除。如果count等于0,则删除链表中所有等于value的元素。如果指定的Key不存在,则直接返回0。返回被删除的元素数量。
LSET key index valueO(N)时间复杂度中N表示链表中元素的数量。但是设定头部或尾部的元素时,其时间复杂度为O(1)。设定链表中指定位置的值为新值,其中0表示第一个元素,即头部元素,-1表示尾部元素。如果索引值Index超出了链表中元素的数量范围,该命令将返回相关的错误信息。
LINDEX key indexO(N)时间复杂度中N表示在找到该元素时需要遍历的元素数量。对于头部或尾部元素,其时间复杂度为O(1)。该命令将返回链表中指定位置(index)的元素,index是0-based,表示头部元素,如果index为-1,表示尾部元素。如果与该Key关联的不是链表,该命令将返回相关的错误信息。返回请求的元素,如果index超出范围,则返回nil。
LTRIM key start stopO(N)N表示被删除的元素数量。该命令将仅保留指定范围内的元素,从而保证链接中的元素数量相对恒定。start和stop参数都是0-based,0表示头部元素。和其他命令一样,start和stop也可以为负值,-1表示尾部元素。如果start大于链表的尾部,或start大于stop,该命令不错报错,而是返回一个空的链表,与此同时该Key也将被删除。如果stop大于元素的数量,则保留从start开始剩余的所有元素。
LINSERT key BEFORE|AFTER pivot valueO(N)时间复杂度中N表示在找到该元素pivot之前需要遍历的元素数量。这样意味着如果pivot位于链表的头部或尾部时,该命令的时间复杂度为O(1)。该命令的功能是在pivot元素的前面或后面插入参数中的元素value。如果Key不存在,该命令将不执行任何操作。如果与Key关联的Value类型不是链表,相关的错误信息将被返回。成功插入后链表中元素的数量,如果没有找到pivot,返回-1,如果key不存在,返回0。
RPUSH key value [value …]O(1)在指定Key所关联的List Value的尾部插入参数中给出的所有Values。如果该Key不存在,该命令将在插入之前创建一个与该Key关联的空链表,之后再将数据从链表的尾部插入。如果该键的Value不是链表类型,该命令将返回相关的错误信息。插入后链表中元素的数量。
RPUSHX key valueO(1)仅有当参数中指定的Key存在时,该命令才会在其所关联的List Value的尾部插入参数中给出的Value,否则将不会有任何操作发生。插入后链表中元素的数量。
RPOP keyO(1)返回并弹出指定Key关联的链表中的最后一个元素,即尾部元素,。如果该Key不存,返回nil。链表尾部的元素。
RPOPLPUSH source destinationO(1)原子性的从与source键关联的链表尾部弹出一个元素,同时再将弹出的元素插入到与destination键关联的链表的头部。如果source键不存在,该命令将返回nil,同时不再做任何其它的操作了。如果source和destination是同一个键,则相当于原子性的将其关联链表中的尾部元素移到该链表的头部。返回弹出和插入的元素。

三、命令示例:

  1. LPUSH/LPUSHX/LRANGE:
    /> redis-cli #在Shell提示符下启动redis客户端工具。
    redis 127.0.0.1:6379> del mykey
    (integer) 1
    mykey键并不存在,该命令会创建该键及与其关联的List,之后在将参数中的values从左到右依次插入。
    redis 127.0.0.1:6379> lpush mykey a b c d
    (integer) 4
    取从位置0开始到位置2结束的3个元素。
    redis 127.0.0.1:6379> lrange mykey 0 2
    1) “d”
    2) “c”
    3) “b”
    取链表中的全部元素,其中0表示第一个元素,-1表示最后一个元素。
    redis 127.0.0.1:6379> lrange mykey 0 -1
    1) “d”
    2) “c”
    3) “b”
    4) “a”
    mykey2键此时并不存在,因此该命令将不会进行任何操作,其返回值为0。
    redis 127.0.0.1:6379> lpushx mykey2 e
    (integer) 0
    可以看到mykey2没有关联任何List Value。
    redis 127.0.0.1:6379> lrange mykey2 0 -1
    (empty list or set)
    mykey键此时已经存在,所以该命令插入成功,并返回链表中当前元素的数量。
    redis 127.0.0.1:6379> lpushx mykey e
    (integer) 5
    获取该键的List Value的头部元素。
    redis 127.0.0.1:6379> lrange mykey 0 0
    1) “e”

  2. LPOP/LLEN:
    redis 127.0.0.1:6379> lpush mykey a b c d
    (integer) 4
    redis 127.0.0.1:6379> lpop mykey
    “d”
    redis 127.0.0.1:6379> lpop mykey
    “c”
    在执行lpop命令两次后,链表头部的两个元素已经被弹出,此时链表中元素的数量是2
    redis 127.0.0.1:6379> llen mykey
    (integer) 2

  3. LREM/LSET/LINDEX/LTRIM:
    为后面的示例准备测试数据。
    redis 127.0.0.1:6379> lpush mykey a b c d a c
    (integer) 6
    从头部(left)向尾部(right)变量链表,删除2个值等于a的元素,返回值为实际删除的数量。
    redis 127.0.0.1:6379> lrem mykey 2 a
    (integer) 2
    看出删除后链表中的全部元素。
    redis 127.0.0.1:6379> lrange mykey 0 -1
    1) “c”
    2) “d”
    3) “c”
    4) “b”
    获取索引值为1(头部的第二个元素)的元素值。
    redis 127.0.0.1:6379> lindex mykey 1
    “d”
    将索引值为1(头部的第二个元素)的元素值设置为新值e。
    redis 127.0.0.1:6379> lset mykey 1 e
    OK
    查看是否设置成功。
    redis 127.0.0.1:6379> lindex mykey 1
    “e”
    索引值6超过了链表中元素的数量,该命令返回nil。
    redis 127.0.0.1:6379> lindex mykey 6
    (nil)
    设置的索引值6超过了链表中元素的数量,设置失败,该命令返回错误信息。
    redis 127.0.0.1:6379> lset mykey 6 hh
    (error) ERR index out of range
    仅保留索引值0到2之间的3个元素,注意第0个和第2个元素均被保留。
    redis 127.0.0.1:6379> ltrim mykey 0 2
    OK
    查看trim后的结果。
    redis 127.0.0.1:6379> lrange mykey 0 -1
    1) “c”
    2) “e”
    3) “c”

  4. LINSERT:
    删除该键便于后面的测试。
    redis 127.0.0.1:6379> del mykey
    (integer) 1
    为后面的示例准备测试数据。
    redis 127.0.0.1:6379> lpush mykey a b c d e
    (integer) 5
    在a的前面插入新元素a1。
    redis 127.0.0.1:6379> linsert mykey before a a1
    (integer) 6
    查看是否插入成功,从结果看已经插入。注意lindex的index值是0-based。
    redis 127.0.0.1:6379> lindex mykey 0
    “e”
    在e的后面插入新元素e2,从返回结果看已经插入成功。
    redis 127.0.0.1:6379> linsert mykey after e e2
    (integer) 7
    再次查看是否插入成功。
    redis 127.0.0.1:6379> lindex mykey 1
    “e2”
    在不存在的元素之前或之后插入新元素,该命令操作失败,并返回-1。
    redis 127.0.0.1:6379> linsert mykey after k a
    (integer) -1
    为不存在的Key插入新元素,该命令操作失败,返回0。
    redis 127.0.0.1:6379> linsert mykey1 after a a2
    (integer) 0

  5. RPUSH/RPUSHX/RPOP/RPOPLPUSH:
    删除该键,以便于后面的测试。
    redis 127.0.0.1:6379> del mykey
    (integer) 1
    从链表的尾部插入参数中给出的values,插入顺序是从左到右依次插入。
    redis 127.0.0.1:6379> rpush mykey a b c d
    (integer) 4
    通过lrange的可以获悉rpush在插入多值时的插入顺序。
    redis 127.0.0.1:6379> lrange mykey 0 -1
    1) “a”
    2) “b”
    3) “c”
    4) “d”
    该键已经存在并且包含4个元素,rpushx命令将执行成功,并将元素e插入到链表的尾部。
    redis 127.0.0.1:6379> rpushx mykey e
    (integer) 5
    通过lindex命令可以看出之前的rpushx命令确实执行成功,因为索引值为4的元素已经是新元素了。
    redis 127.0.0.1:6379> lindex mykey 4
    “e”
    由于mykey2键并不存在,因此该命令不会插入数据,其返回值为0。
    redis 127.0.0.1:6379> rpushx mykey2 e
    (integer) 0
    在执行rpoplpush命令前,先看一下mykey中链表的元素有哪些,注意他们的位置关系。
    redis 127.0.0.1:6379> lrange mykey 0 -1
    1) “a”
    2) “b”
    3) “c”
    4) “d”
    5) “e”
    将mykey的尾部元素e弹出,同时再插入到mykey2的头部(原子性的完成这两步操作)。
    redis 127.0.0.1:6379> rpoplpush mykey mykey2
    “e”
    通过lrange命令查看mykey在弹出尾部元素后的结果。
    redis 127.0.0.1:6379> lrange mykey 0 -1
    1) “a”
    2) “b”
    3) “c”
    4) “d”
    通过lrange命令查看mykey2在插入元素后的结果。
    redis 127.0.0.1:6379> lrange mykey2 0 -1
    1) “e”
    将source和destination设为同一键,将mykey中的尾部元素移到其头部。
    redis 127.0.0.1:6379> rpoplpush mykey mykey
    “d”
    查看移动结果。
    redis 127.0.0.1:6379> lrange mykey 0 -1
    1) “d”
    2) “a”
    3) “b”
    4) “c”

四、链表结构的小技巧:

针对链表结构的Value,Redis在其官方文档中给出了一些实用技巧,如RPOPLPUSH命令,下面给出具体的解释。

Redis链表经常会被用于消息队列的服务,以完成多程序之间的消息交换。假设一个应用程序正在执行LPUSH操作向链表中添加新的元素,我们通常将这样的程序称之为”生产者(Producer)”,而另外一个应用程序正在执行RPOP操作从链表中取出元素,我们称这样的程序为”消费者(Consumer)”。如果此时,消费者程序在取出消息元素后立刻崩溃,由于该消息已经被取出且没有被正常处理,那么我们就可以认为该消息已经丢失,由此可能会导致业务数据丢失,或业务状态的不一致等现象的发生。然而通过使用RPOPLPUSH命令,消费者程序在从主消息队列中取出消息之后再将其插入到备份队列中,直到消费者程序完成正常的处理逻辑后再将该消息从备份队列中删除。同时我们还可以提供一个守护进程,当发现备份队列中的消息过期时,可以重新将其再放回到主消息队列中,以便其它的消费者程序继续处理。

AutoSar标准官网下载 AutoSar文档下载和文档命名格式。。。 阅读详情

相关推荐

抄表程序员的DLMS/COSEM协议实战:从抓包到解析,手把手教你读懂IEC62056报文

本文深入解析DLMS/COSEM协议在智能电表通信中的应用,从报文捕获到数据解析的全流程实战指南。涵盖HDLC帧解析、应用层连接建立、数据请求/响应解码等核心内容,并提供Wireshark配置、OBIS代码速查表等实用工具,帮助开发者快速掌握IEC62056标准下的电能表通信技术。

weixin_29178069的博客 299

Redis小知识点记录

key 的自动创建和删除 我们无需在放入元素前创建空的list,也无需在list没有元素的时候删除它。在 list 为空时删除 key,并在用户试图添加元素(比如通过LPUSH)而键不存在时创建空 list,是 Redis 的职责。 这不光适用于 lists,还适用于所有包括多个元素的 Redis 数据类型 – Sets, Sorted Sets 和 Hashes。 基本上,我们可以用三条...

xu215740578的博客 286

ANSYS_APDL实战入门——从零开始掌握模态分析

本文为ANSYS APDL模态分析实战入门指南,通过一个悬臂梁案例,手把手教你从零开始掌握APDL命令流。内容涵盖从模型创建、材料定义、网格划分到边界条件设置、求解及后处理结果查看的全流程,帮助工程师快速上手结构动力学分析,避免共振风险。

egg99的博客 1129

redis 操作list时Pop操作list为空?

redis 操作list时Pop操作list为空? Pop操作分为 : leftPop(K key) 移除集合中的左边第一个元素。 rightPop(K key) 移除集合中右边的元素。 问题:用rightPop举例,rightPop移除的list为空为怎么样?猜想是否会抛异常? 第一步:在redis中存入一个list,list中放入一个元素 第二步:调用rightPop操作 Object obj = redisTemplate.opsForList().rightPop(key) 因为list中存

weixin_44423433的博客 6820

基于ESP32-P4的低成本旋转式激光雷达系统设计

激光雷达(LiDAR)作为机器人环境感知的核心传感器,其本质是融合光学测距、机电控制与实时数据处理的嵌入式系统。理解时间飞行(ToF)原理与机械旋转耦合机制,是实现高精度点云采集的基础;而系统级误差源——如计时抖动、电机惯性、信号串扰和温漂——直接决定实际建图鲁棒性。在资源受限场景下,选用RISC-V双核MCU(如ESP32-P4)可兼顾实时控制与网络服务能力,通过硬件时间戳捕获、S型加减速轨迹规划、旋转变压器供电及双Bank OTA等工程手段,有效平衡分辨率、帧率与稳定性。本文围绕360°旋转式激光雷达的

weixin_36231030的博客 431

Tartancalib标定OAK-FFC_4p(上)

1.使用Tartancalib标定双目或多目相机前,先对单个相机标定获得内参,再获得外参。

qq_51731421的博客 1277

redis的list为空时为什么键被删除

一个协程brpop在一个redis list队列上,当list为空时,使用key查询redis db,发现此队列的key不存在;只有当list不空时才能keys到。从源码中剖析下原因

my_live_123 5788

echarts实现3D地图——map3D

【代码】echarts实现3D地图——map3D。

xiaoququ的博客 7317

Redis数据类型

它是通过 HashTable 实现的, 相当于 Java 语言里面的 HashSet,它内部的键值对是无序的唯一的。因为 C 字符串并不记录自身的长度信息, 所以为了获取一个 C 字符串的长度, 程序必须遍历整个字符串,对遇到的每个字符进行计数, 直到遇到代表字符串结尾的空字符为止, 这个操作的复杂度为 O(N)不同的是,Redis 的字典的值只能是字符串,另外它们 rehash 的方式不一样,因为 Java 的 HashMap 在字典很大时,rehash 是个耗时的操作,需要一次性全部 rehash。

weixin_43731005的博客 378

从扇束到平行束:等角重排算法在CT重建中的核心原理与MATLAB实践

本文深入解析了CT图像重建中等角扇束重排算法的核心原理与MATLAB实现。通过将实际采集的扇束投影数据,利用几何映射和两次关键插值,转换为适用于经典滤波反投影算法的平行束数据,打通了高效重建的关键路径。文章结合Shepp-Logan模型仿真,提供了完整的MATLAB代码实践,并分析了源-物距、采样率等关键参数对重建质量的影响。

cnn8visionary的博客 646

STM32实战开发(76):STM32开发无线传感器网络(WSN)完整实现

本文介绍了如何基于STM32开发无线传感器网络,包括硬件选择、通信协议、系统设计和编程实现。通过STM32的强大性能和低功耗特性,我们能够构建高效、可靠的无线传感器网络。无论是Zigbee、LoRa、Wi-Fi还是BLE协议,STM32都能够与多种通信模块进行兼容,满足不同应用的需求。希望这篇文章能帮助您了解无线传感器网络的构建流程,并为您的项目提供有价值的参考。

2201_76125393的博客 1058

springboot中application.properties文件redis的配置

# REDIS (RedisProperties) # Redis数据库索引(默认为0) spring.redis.database=0 # Redis服务器地址 spring.redis.host=localhost # Redis服务器连接端口 spring.redis.port=6379 # Redis服务器连接密码(默认为空) spring.redis.password= # 连接池最大连...

吴成伟的博客 1万+

Simulink仿真模块 - Signal Conversion

目录 说明 实例 创建总线信号的连续副本 ​将虚拟总线转换为非虚拟总线​ 将非虚拟总线转换为虚拟总线 将Muxed信号转换为矢量 模块特性 Signal Conversion:将信号转换为新类型,而不改变信号值 在仿真库中的位置为: Simulink / Signal Attributes HDL Coder / Signal Attributes 模型为: 说明 Signal Conversion模块可将信号从一种类型转换为另一种类型。要选择要...

jk_101的博客 3419

Redis五大数据类型之List操作命令

Redis五大数据类型List操作命令一、常用命令1.1、BLPOP key1[key2] timeout1.2、BPROP key1[key2] timeout1.3、BRPOPLPUSH source destination timeout1.4、LINDEX key index1.5、LINSERT key BEFORE|AFTER pivot value1.6、LLEN key1.7、LPOP key1.8、LPUSH key value1 [value2]1.9、LPUSHX key value1

冲出仁川,走出马德里,故事还会再继续 1157

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

redis:list数据类型与操作

redis数据类型之list:redis list数据类型是一个双向循环链表。redis.conf中的相关配置如下: 428 # Similarly to hashes, small lists are also encoded in a special way in order 429 # to save a lot of space. The special representation i

shamohua的专栏 6470

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

redis数据类型操作之list

redis数据类型操作之list list类型 列表的元素类型为string 按照插⼊顺序排序 增加 在左侧插⼊数据 lpush key value1 value2 ... 例1:从键为a1的列表左侧加⼊数据a 、 b 、c lpush a1 a b c 在右侧插⼊数据 rpush key value1 value2 ... 例2:从键为a1的列表右侧加⼊数据0、1 rpush a1 0 1 在指定元素的前或后插⼊新元素 linsert key before或after 现有元素 新元素

li944254211的博客 193

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Redis中的List数据类型的命令行操作

Redis中的List数据类型的命令行操作List1. LPUSH2. LRANGE3. LLEN4. LINDEX5. LPOP6. LINSERT7. LPUSHX8.LREM9. LSET List Redis的列表允许用户从两端推入(push)和弹出(pop)元素。 列表是由多个字符串组成的有序可重复的序列。是链表结构 1. LPUSH LPUSH key value [value …] 依次压入链表中 返回的是生成的链表长度 且可以通过该命令追加。 127.0.0.1:6379> LPU

qq_41426771的博客 652

redis学习02-Hash、List数据类型以及常用操作

redis学习02-Hash、List数据类型以及常用操作

qq_43713840的博客 336

Golang 操作Redis五大数据类型 String、List、Hash、Set、Zset

前言 使用redis首先要部署redis,载个安装包,部署下即可,本文不赘述了。redis官网:https://redis.io/ 接着要下载golang的redis资源包,golang官方推荐的有redisgo和go-reids,个人认为go-redis的封装更加人性化,redisgo的调用是基于命令的,go-redis是基于方法的,所以本文先来介绍go-redis的使用。 2行代码来比较下2种资源包的调用方式: redisgo: client.Do("SET", "mykey", "我是数据", "EX

July_whj 3400

Python3中redis模块学习之list数据类型操作

目录起步增lpushlpushxrpushrpushx删lpoprpopblpopbrpoprpoplpushbrpoplpushlremltrim改lsetlinsert查llenlindexlrange整体代码 起步 #!/usr/bin/python3 # -*- coding: utf-8 -*- """list类型操作""" import redis pool = redis.Con...

爱喝水的qdy的博客 594

Redis学习总结(三)——list、hashset数据类型的操作

目录 一、List数据类型 1.1 概述: 1.2 相关命令列表: 1.3 命令示例: 1.4、链表结构的小技巧: 二、HashSet数据类型 2.1、概述: 2.2、相关命令列表: 2.3、命令示例: 一、List数据类型 1.1 概述:       在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部...

Gorden的博客 1095

RedisTemplate 操作Redis中的数据类型(String hash list set 等)

引言: 之前我写了篇 如何在SpringBoot 中引入Redis , 其实无论技术也好,我们不单单要会用,还要懂得一些原理性的东西,这就好比如果你的简历上写了你会Redis ,面试官问你 一些关于Redis 的问题,如果你说不上来 或者答的不好的话,别人可能会觉得你掌握的也不怎么样。 这篇文章让我们已一个问答的形式来掌握Redis 吧!。 参考文章: https://baiji...

Soup's Blog 3110

【Redis】Client端下的基本操作以及五大基础数据类型中List与String的常用操作

Client下的各种命令 进入client端的步骤 切换到对应redis所安装的目录,这里安装在/usr/local下 切换至其bin目录中 通过redis-server [配置文件]启动服务器端 通过redis-cli进入客户端 这里的配置文件指的是在etc目录下自己定义的redis.conf文件,一般可以自己配置redis选项。其中为了让服务端能在后台启动,注意这里一个配置 这里将daemonize设置为yes 则可以通过该配置文件让redis服务端在后台运行。而不需要总是卡在默认条件下的时候那种

weixin_45864947的博客 586

Redis数据类型 List类型 常见命令和操作

Redis数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)等 List类型 简介 List类型是一个链表结构的集合,其主要功能有push、pop、获取元素等。更详细的说,List类型是一个双端链表的节后,我们可以通过相关的操作进行集合的头部或者尾部添加和删除元素,List的设计非常简单精巧,即可以作为栈,又可以作为队列,满足绝大多数的需求。 按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或

兔子大人 423

Redis实战--SpringBoot中对Redis数据类型list的基本操作示例

echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075)交流学习。 百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!!! 该文章是接上一篇文章《Redis整合SpringBoot示例》的后续,操作用例代码比较多,这里展示核心代码所占篇幅很多,所以单独抽出来写 list类型在SpringBoot中的使用代码如下 packa...

xlecho的博客 1041

系统学习redis之五——redis数据类型之list类型及操作

list数据类型介绍 list是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等,操作中key可以理解为链表的名字。redis的list类型其实就是一个每个子元素都是string类型的双向链表。我们可以通过push、pop操作从链表的头部或者尾部添加删除元素,这样,list既可以作为栈,又可以作为队列。 额,用两个比较通俗的例子描述栈和队列的区别:栈:就像先往篮子里里面装苹果,装...

weixin_33968104的博客 246
上一篇: Redis---String数据类型的操作
下一篇: Redis---hashset数据类型操作
杜鲁门
博客等级 码龄11年 219粉丝 316原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值