Redis 命令全解析之 List类型

文章目录

  • 命令
  • RedisTemplate API
  • 使用场景


在这里插入图片描述

RedisList 是一种有序、可重复、可变动的数据结构,它基于双向链表实现。在Redis中,List可以存储多个相同或不同类型的元素,每个元素在List中都有一个对应的索引位置。这使得List可以用来实现队列、栈等数据结构。


命令

以下是一些常用的Redis List相关命令:

LPUSH key value1 [value2 …]:将一个或多个值从左边推入List中。
RPUSH key value1 [value2 …]:将一个或多个值从右边推入List中。
LPOP key:从List的左端弹出一个值,并返回该值。
RPOP key:从List的右端弹出一个值,并返回该值。
LRANGE key start stop:返回List中指定范围内的元素。
LLEN key:返回List的长度。
LINDEX key index:返回List中指定索引位置的元素。
LINSERT key BEFORE|AFTER pivot value:在List中特定元素前面或后面插入一个新元素。
LSET key index value:设置List中指定索引位置的值。
LREM key count value:从List中删除指定个数的指定值。


RedisTemplate API

1)、添加缓存(2/3是1的递进值)
//1、通过redisTemplate设置值

redisTemplate.boundListOps("listKey").leftPush("listLeftValue1");
redisTemplate.boundListOps("listKey").rightPush("listRightValue2");

//2、通过BoundValueOperations设置值

BoundListOperations listKey = redisTemplate.boundListOps("listKey");
listKey.leftPush("listLeftValue3");
listKey.rightPush("listRightValue4");

//3、通过ValueOperations设置值

ListOperations opsList = redisTemplate.opsForList();
opsList.leftPush("listKey", "listLeftValue5");
opsList.rightPush("listKey", "listRightValue6");

2)、将List放入缓存

ArrayList<String> list = new ArrayList<>();
redisTemplate.boundListOps("listKey").rightPushAll(list);
redisTemplate.boundListOps("listKey").leftPushAll(list);

3)、设置过期时间(单独设置)

redisTemplate.boundValueOps("listKey").expire(1,TimeUnit.MINUTES);
redisTemplate.expire("listKey",1,TimeUnit.MINUTES);

4)、获取List缓存全部内容(起始索引,结束索引)

List listKey1 = redisTemplate.boundListOps("listKey").range(0, 10); 

5)、从左或从右弹出一个元素

String listKey2 = (String) redisTemplate.boundListOps("listKey").leftPop();  //从左侧弹出一个元素
String listKey3 = (String) redisTemplate.boundListOps("listKey").rightPop(); //从右侧弹出一个元素

6)、根据索引查询元素

String listKey4 = (String) redisTemplate.boundListOps("listKey").index(1);

7)、获取List缓存的长度

Long size = redisTemplate.boundListOps("listKey").size();

8)、根据索引修改List中的某条数据(key,索引,值)

redisTemplate.boundListOps("listKey").set(3L,"listLeftValue3");

9)、移除N个值为value(key,移除个数,值)

redisTemplate.boundListOps("listKey").remove(3L,"value");

使用场景

Redis中的List类型在实际应用中有许多场景,以下是一些常见的应用场景:

  • 消息队列(Message Queue):List可以用作简单的消息队列,生产者通过LPUSH将消息推入队列,消费者通过RPOP或BLPOP等命令从队列中弹出消息,实现简单的消息传递。

  • 实时消息处理:List可以用于实现实时消息处理系统,生产者不断向List中推入消息,消费者通过不断地读取List中的消息进行处理。

  • 数据流处理:List可以用于处理数据流,例如日志处理系统中,日志消息可以按时间顺序推入List,然后通过消费者逐条处理。

  • 任务队列(Task Queue):List可以用作任务队列,生产者向List中推入任务,消费者按顺序处理任务,实现任务的异步处理。

  • 实时排行榜:List可以用于实时排行榜的实现,将用户的分数作为值存储在List中,通过对List进行排序或截取操作可以得到排行榜数据。

  • 事件驱动编程:List可以用于事件驱动编程模型,通过LPUSH向List中推入事件,然后由消费者异步处理事件,实现解耦和高可扩展性。

Redis的List类型在实际应用中可以提供高性能的数据存储和处理功能,特别适合处理实时性要求高、读写频繁的场景。通过合理地运用List相关命令,可以实现各种复杂的数据处理需求。



在这里插入图片描述



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/424231.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java中线程安全的集合类

在先前的文章中我们已经讲过了原子类(线程安全的基本类型&#xff0c;基于CAS实现)&#xff0c;详见常见锁策略&#xff0c;synchronized内部原理以及CAS-CSDN博客 &#xff0c;我们在来讲一下集合类&#xff0c;在原来的集合类&#xff0c;大多数是线程不安全的&#xff0c;虽…

ABAP - SALV教程11 红黄绿灯

SALV通过某列设置成异常列&#xff0c;SALV就会根据某列的值自动映射成红黄绿灯注意事项 该列的类型为CHAR1,即是结构的字段类型为CHAR1该字段的值赋值为 (space,1,2,3) space&#xff1a;灰灯、1&#xff1a;红灯、2&#xff1a;黄灯、3&#xff1a;绿灯 案例代码 CLASS lcl…

一份简单的前端开发指南

文章目录 一、HTML1、表格2、常见标签3、行内、块级4、行内块级元素 二、CSS1、三种样式2、链接样式3、浮动4、清除浮动5、伪类&#xff0c;伪元素6、position7、后代选择器8、弹性布局 三、JavaScripts1、null和undefined的区别2、var let const3、原生数据类型4、双等和三等5…

Qt 简约美观的加载动画 文本风格 第八季

今天和大家分享一个文本风格的加载动画, 有两类,其中一个可以设置文本内容和文本颜色,演示了两份. 共三个动画, 效果如下: 一共三个文件,可以直接编译 , 如果对您有所帮助的话 , 不要忘了点赞呢. //main.cpp #include "LoadingAnimWidget.h" #include <QApplic…

Github 2024-03-03 开源项目日报Top9

根据Github Trendings的统计&#xff0c;今日(2024-03-03统计)共有9个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量非开发语言项目4Rust项目1C项目1Jupyter Notebook项目1Python项目1Shell项目1 任天堂Switch模拟器yuzu&#x…

13-微服务初探-自研微服务框架

微服务初探 1. 架构变迁之路 1.1 单体架构 互联网早期&#xff0c;一般的网站应用流量较小&#xff0c;只需要一个应用&#xff0c;将所有的功能代码都部署在一起就可以&#xff0c;这样可以减少开发&#xff0c;部署和维护的成本。 比如说一个电商系统&#xff0c;里面包含…

【每日刷题】数组-LC56、LC238、随想录1、LC560

1. LC56 合并区间 题目链接 Arrays.sort先让intervals里的子数组按照子数组的第一个数字值从小到大排列。开一个新数组&#xff0c;newInterval&#xff0c;存放合并好的子数组让intervals的当前子数组i的第一个数字与newInterval的当前子数组index的最后一个数字比较大小&am…

2024 年适用于电脑的十大录制屏幕软件

录制屏幕软件的设计和开发旨在让您的工作流程更轻松、更高效。这些漂亮的工具有助于为教育目的捕获图像快照或记录屏幕以与客户共享模型。无论您寻找桌面屏幕录像机的原因是什么&#xff0c;这里都有最好的付费和免费实用程序。该类别中我们最喜欢的一些选择是 奇客录屏助手和 …

docker 转为docker-compose(composerize 命令)

可以使用Composerize将Docker命令转换为Docker Compose文件。 例如&#xff1a;将docker run命令转换为Docker Compose格式&#xff0c;只需用Composerize运行它&#xff0c;如下所示&#xff1a; composerize docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/…

IDEA的安装教程

1、下载软件安装包 官网下载&#xff1a;https://www.jetbrains.com/idea/ 2、开始安装IDEA软件 解压安装包&#xff0c;找到对应的idea可执行文件&#xff0c;右键选择以管理员身份运行&#xff0c;执行安装操作 3、运行之后&#xff0c;点击NEXT&#xff0c;进入下一步 4、…

美团分布式 ID 框架 Leaf 介绍和使用

一、Leaf 在当今日益数字化的世界里&#xff0c;软件系统的开发已经成为了几乎所有行业的核心。然而&#xff0c;随着应用程序的规模不断扩大&#xff0c;以及对性能和可扩展性的需求不断增加&#xff0c;传统的软件架构和设计模式也在不断地面临挑战。其中一个主要挑战就是如…

凌特杯,第二届,数字音频传输。simulink matlab

终于比赛进入了尾声&#xff0c;最为指导老师也是非常的激动。接下来进入了论文写作阶段和视频拍摄阶段。 第二届凌特杯规定的硬件是ADI的Pluto&#xff0c;成本在2k以内&#xff0c;能支持MATLAB&#xff0c;它能够流畅的实时播放接收到的音乐数据&#xff0c;并把数据保存成…

图论例题解析

1.图论基础概念 概念 &#xff08;注意连通非连通情况&#xff0c;1节点&#xff09; 无向图&#xff1a; 度是边的两倍&#xff08;没有入度和出度的概念&#xff09; 1.完全图&#xff1a; 假设一个图有n个节点&#xff0c;那么任意两个节点都有边则为完全图 2.连通图&…

Mysql列子查询

目录 列子查询数据准备 列子查询 子查询返回的结果是一列(可以是多行)&#xff0c;这种子查询称为列子查询。 常用的操作符&#xff1a; 操作符描述IN在指定的集合范围之内&#xff0c;多选一NOT IN不在指定的集合范围之内 案例&#xff1a;查询"教研部"和"…

【UE 材质】冰冻效果

效果 步骤 1. 打开“Quixel Bridge” 下载冰的纹理 2. 新建一个材质&#xff0c;这里命名为“M_Frozen” 打开“M_Frozen”&#xff0c;添加如下节点&#xff0c;此时我们可以通过控制参数“偏移”来改变边界的偏移 此时预览效果如下 如果增加参数“偏移”的默认值效果如下 3.…

Transformer中的自注意力机制计算过程分析

目录 1 什么是自注意力机制 2 自注意力的计算过程 1 什么是自注意力机制 自注意力机制&#xff08;Self-Attention&#xff09;顾名思义就是关注单个序列内部元素之间的相关性&#xff0c;不仅可以用于 seq2seq 的机器翻译模型&#xff0c;还能用于情感分析、内容提取等场景…

Doris实战——美联物业数仓

目录 一、背景 1.1 企业背景 1.2 面临的问题 二、早期架构 三、新数仓架构 3.1 技术选型 3.2 运行架构 3.2.1 数据模型 纵向分域 横向分层 数据同步策略 3.2.2 数据同步策略 增量策略 全量策略 四、应用实践 4.1 业务模型 4.2 具体应用 五、实践经验 5.1 数据…

Spring Boot项目中不使用@RequestMapping相关注解,如何动态发布自定义URL路径

一、前言 在Spring Boot项目开发过程中&#xff0c;对于接口API发布URL访问路径&#xff0c;一般都是在类上标识RestController或者Controller注解&#xff0c;然后在方法上标识RequestMapping相关注解&#xff0c;比如&#xff1a;PostMapping、GetMapping注解&#xff0c;通…

Java项目:30 基于SpringBoot自习室座位预定系统

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 功能设计 管理员 1、用户管理 管理员可以新增、删除管理员 管理员可以删除学生 2、自习室管理 管理员可以新增自习室、设置自习室的座位…

关于福彩历史数据采集器和体彩历史数据采集器的下载安装说明

前段时间因为研究基于人工神经网络&#xff08;深度学习&#xff0c;所谓的“AI”算法&#xff09;对3D开奖数据进行预测&#xff0c;开发了两款浏览器插件----“福彩历史数据采集器”和“体彩历史数据采集器”。之所以开发这两款插件&#xff0c;是因为不管是基于什么样的方式…