当前位置: 首页 > news >正文

Redis基础教程(七):redis列表(List)

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快!
💝💝💝如有需要请大家订阅我的专栏【Redis系列】哟!我会定期更新相关系列的文章
💝💝💝关注!关注!!请关注!!!请大家关注下博主,您的支持是我不断创作的最大动力!!!

文章目录

    • 引言
    • 一、Redis 列表特性
      • 常用命令
    • 二、实战案例
      • 场景:消息队列
        • 步骤1:初始化消息队列
        • 步骤2:向队列添加消息
        • 步骤3:从队列中获取并处理消息
        • 步骤4:检查队列长度
      • 场景:任务调度
        • 步骤1:初始化任务队列
        • 步骤2:添加任务到队列
        • 步骤3:从队列中取出任务
        • 步骤4:修剪队列以保持固定大小
    • 总结

引言

Redis 列表(List)是一种灵活的数据结构,可以用于存储一系列有序的元素。每个列表都是一个双向链表,这使得在列表两端添加或删除元素的复杂度为 O(1),即操作时间不会随列表长度的增长而增长。本文将详细介绍 Redis 列表的特性和常用命令,通过实战案例展示列表在消息队列、任务调度、历史记录追踪等场景中的应用。

一、Redis 列表特性

Redis 列表由多个节点组成,每个节点包含一个字符串元素。列表可以存储任意数量的元素,而且列表中的元素可以重复。由于列表是双向链表,因此可以从列表的头部或尾部进行操作,这为实现先进先出(FIFO)或后进先出(LIFO)队列提供了基础。

常用命令

  1. LPUSH key element [element …]

    • 描述:将一个或多个值插入到列表的头部。
    • 示例:LPUSH list1 value1 value2
  2. RPUSH key element [element …]

    • 描述:将一个或多个值插入到列表的尾部。
    • 示例:RPUSH list1 value1 value2
  3. LPOP key

    • 描述:移除并返回列表的第一个元素。
    • 示例:LPOP list1
  4. RPOP key

    • 描述:移除并返回列表的最后一个元素。
    • 示例:RPOP list1
  5. LRANGE key start stop

    • 描述:返回列表中指定范围的元素。
    • 示例:LRANGE list1 0 5,返回列表的前六个元素。
  6. LLEN key

    • 描述:返回列表的长度。
    • 示例:LLEN list1
  7. LINDEX key index

    • 描述:返回列表中指定位置的元素。
    • 示例:LINDEX list1 2
  8. LREM key count value

    • 描述:移除列表中等于 value 的元素。
    • 示例:LREM list1 2 value1,从列表头部开始移除前两个等于 value1 的元素。
  9. LTRIM key start stop

    • 描述:对一个列表进行修剪(trim),使其只保留指定区间内的元素。
    • 示例:LTRIM list1 0 10

二、实战案例

场景:消息队列

假设我们正在开发一个实时聊天应用,需要实现一个消息队列,用于存储用户发送的消息,然后由消息处理服务异步处理这些消息。

步骤1:初始化消息队列
redis-cli DEL messages
步骤2:向队列添加消息
redis-cli LPUSH messages "message from user1"
redis-cli LPUSH messages "message from user2"
步骤3:从队列中获取并处理消息
redis-cli BRPOP messages 0

这里使用BRPOP命令,它会阻塞直到消息可用。参数0表示无限期阻塞,直到有消息为止。

步骤4:检查队列长度
redis-cli LLEN messages

场景:任务调度

假设我们正在构建一个任务调度系统,需要将任务存储在队列中,然后由工作进程依次处理。

步骤1:初始化任务队列
redis-cli DEL tasks
步骤2:添加任务到队列
redis-cli RPUSH tasks "task1"
redis-cli RPUSH tasks "task2"
步骤3:从队列中取出任务
redis-cli BLPOP tasks 0

这里使用BLPOP命令,同样会阻塞直到任务可用。

步骤4:修剪队列以保持固定大小
redis-cli LTRIM tasks 0 100

这样可以确保队列中最多只有100个任务,多余的旧任务将被自动移除。


喜欢博主的同学,请给博主一丢丢打赏吧↓↓↓您的支持是我不断创作的最大动力哟!感谢您的支持哦😘😘😘
打赏下吧

💝💝💝如有需要请大家订阅我的专栏【Redis系列】哟!我会定期更新相关系列的文章
💝💝💝关注!关注!!请关注!!!请大家关注下博主,您的支持是我不断创作的最大动力!!!

总结

Redis 列表因其高效的操作性能和灵活的数据结构,在消息队列、任务调度、历史记录追踪等场景中有着广泛的应用。通过本文的介绍和实战案例,你不仅了解了 Redis 列表的基本特性和常用命令,还学习了如何在实际项目中充分利用列表来解决问题。掌握这些知识和技能,将有助于你更好地利用 Redis 的强大功能,提升应用程序的性能和用户体验。

Redis相关文章索引文章链接
Redis基础教程(一):redis配置Redis基础教程(一):redis配置
Redis基础教程(二):redis数据类型Redis基础教程(二):redis数据类型
Redis基础教程(三):redis命令Redis基础教程(三):redis命令
Redis基础教程(四):redis键(key)Redis基础教程(四):redis键(key)
Redis基础教程(五):string字符串Redis基础教程(五):string字符串
Redis基础教程(六):redis 哈希(Hash)Redis基础教程(六):redis 哈希(Hash)

❤️❤️❤️觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

相关文章:

Redis基础教程(七):redis列表(List)

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…...

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【生成密钥(C/C++)】

生成密钥(C/C) 以生成ECC密钥为例,生成随机密钥。具体的场景介绍及支持的算法规格。 注意: 密钥别名中禁止包含个人数据等敏感信息。 开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复…...

ssm“落雪”动漫网站-计算机毕业设计源码81664

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据新增流程 3.2.2 数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.5本章小结 3 系统总体设…...

【面试题】Reactor模型

Reactor模型 定义 Reactor模型是一种事件驱动的设计模式,用于处理服务请求。它通过将事件处理逻辑与事件分发机制解耦,实现高性能、可扩展的并发处理。Reactor模型适用于高并发、事件驱动的程序设计,如网络服务器等。 特点 事件驱动&#…...

RedHat9 | kickstart无人值守批量安装

一、知识补充 kickstart Kickstart是一种用于Linux系统安装的自动化工具,它通过一个名为ks.cfg的配置文件来定义Linux安装过程中的各种参数和设置。 kickstart的工作原理 Kickstart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,…...

k8s-第五节-StatefulSet

StatefulSet StatefulSet 是用来管理有状态的应用,例如数据库。 前面我们部署的应用,都是不需要存储数据,不需要记住状态的,可以随意扩充副本,每个副本都是一样的,可替代的。 而像**数据库、Redis **这类…...

ai机器狗

ai机器狗的代码很早就开源了,相当于核心,最难东西美国人公开了,开源了,如果有钱,有足够资源的,造出东西有可能比公开这些核心代码的公司或者组织还好。没有技术含量,技术含量别人都解决了&#…...

数据库关键字执行顺序

在 SQL 中,关键字的执行顺序通常如下: FROM:确定要查询的表或数据源,并执行表之间的连接操作(如 INNER JOIN、LEFT JOIN 等)。FROM 子句执行顺序为从后往前、从右到左。ON:应用连接条件&#xf…...

Linux 永久挂载磁盘

文章目录 前言一、使用步骤1.命令 总结 前言 一、使用步骤 1.命令 第一步:创建挂载点 sudo mkdir /hhkj 第二步:磁盘挂载到挂载点(lsblk、lvdisplay) sudo mount /dev/sdb2 /hhkj 或者 sudo mount /dev/centos/home /hhkj 第三…...

windows启动Docker闪退Docker desktop stopped

Windows启动Docker闪退-Docker desktop stopped 电脑上很早就安装有Docker了,但是有一段时间都没有启动了,今天想启动启动不起来了,打开没几秒就闪退,记录一下解决方案。仅供参考 首先,参照其他解决方案,本…...

探索Redis GEOMETRY数据结构:地理空间索引与查询(基于Redis GEO和Java实现附近商户查找功能)

摘要 Redis是一个高性能的键值存储系统,广泛应用于缓存、消息队列、排行榜等场景。本文将介绍Redis中一个假设的GEOMETRY数据结构,用于高效地存储和查询地理空间数据。 1. Redis地理空间数据结构概述 地理空间数据结构允许用户存储地理位置信息&#…...

DP学习——策略模式

学而时习之,温故而知新。 敌人出招(使用场景) 业务中需要多个算法可替换,而不能重构代码时,怎么办?或者一个对象在运行中要根据业务切换不同的模式或者采用不同的算法,怎么办? 到…...

0701_ARM5

练习:使用usart4 main.c #include "uart4.h"int main() {// 初始化 UART4hal_uart4_init();while (1) {// 发送一个字符串//hal_put_char( hal_get_char());hal_put_string(hal_get_string());}return 0; } usart4.c #include "uart4.h"//**…...

Python用户宝典:了解并实现遗传算法

遗传算法是一种基于自然选择的技术,用于解决复杂问题。由于问题很复杂,遗传算法(而不是其他方法)被用来得出解决问题的合理方案。本文介绍遗传算法的基础知识以及如何用Python来实现。 遗传算法的要素 适应度函数 适应度函数衡…...

如何使用深度学习进行实时目标检测:速度与精度的双重挑战

如何使用深度学习进行实时目标检测:速度与精度的双重挑战 目标检测作为计算机视觉领域的核心任务之一,其目的是在图像或视频中识别和定位感兴趣的对象。随着深度学习技术的发展,基于深度学习的目标检测算法在实时性、准确性方面取得了显著进…...

创新引领,构筑产业新高地

在数字经济的浪潮中,成都树莓集团以创新驱动为核心,通过整合行业资源、优化服务、培养数字产业人才等措施,致力于打造产业高地,推动地方经济的高质量发展。 一、创新驱动,引领产业发展 1、引入新技术、新模式&#xf…...

npm,yarn清楚缓存

1.运行以下命令来清理npm缓存: npm cache clean --force或者运行以下命令清理Yarn缓存: yarn cache clean2.删除 node_modules 和锁文件: 删除 node_modules 目录和 package-lock.json 或 yarn.lock 文件,然后重新安装依赖 rm …...

httpclient访问https请求报错处理

C#通过httpclient调用https请求时,报错 错误信息为:The remote certificate is invalid according to the validation procedure 该错误是由于使用httpclient访问不合法的https站点导致出现的异常。 处理代码如下 public static string HttpPostWithT…...

ffmpeg + opencv 把摄像头画面保存为mp4文件(Ubuntu24.04)

参考链接 ffmpeg opencv 把摄像头画面保存为mp4文件_ffmpeg转化摄像头mp4-CSDN博客 调试环境 Ubuntu24.04 ffmpeg 6.1.1 opencv 4.6 g 13.2.0 C源码 #include <iostream> #include <sys/time.h> #include <string>#ifdef __cplusplus extern "…...

Fastapi 项目第二天首次访问时数据库连接报错问题Can‘t connect to MySQL server

问题描述 Fastapi 项目使用 sqlalchemy 连接的mysql 数据库&#xff0c;每次第二天首次访问数据库相关操作&#xff0c;都会报错&#xff1a;sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, “Can’t connect to MySQL server on ‘x.x.x.x’ ([Err…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...