速通Redis基础(三):掌握Redis的列表类型和命令

news2024/9/21 11:15:14

目录

Redis列表类型

Redis列表的基本命令

LPUSH

LPUSHX

RPUSH

RPUSHX

LRANGE

LPOP

RPOP

LINDEX

LINSERT

LLEN

阻塞版本命令

BLPOP

BRPOP

Redis的列表命令小结


Redis是一种高性能、开源的NoSQL数据库,以其支持多种数据类型而闻名。在前两篇博客中,我们介绍了Redis的字符串和哈希类型。今天,我们将深入研究Redis的另一种重要数据类型——列表(List)以及相关命令。

Redis列表类型

Redis的列表是一个有序的数据集合,可以包含重复的元素。它类似于其他编程语言中的数组,但有一些特定的功能和命令使其非常有用。以下是Redis列表的一些关键特性:

  1. 有序性:列表中的元素保持插入顺序,这使得列表非常适合实现队列、堆栈和其他需要有序数据的场景。

  2. 允许重复元素:与集合不同,列表允许包含相同的元素多次。

  3. 支持快速的头尾插入和删除:Redis的列表操作非常高效,可以在常量时间内在列表的头部和尾部插入或删除元素。

  4. 适用范围广泛:列表可用于实现消息队列、最近浏览、时间线和更多应用。

Redis列表的基本命令

LPUSH

将⼀个或者多个元素从左侧放入(头插)到 list 中。

语法:

 LPUSH key element [element ...]

时间复杂度:只插入⼀个元素为 O(1), 插入多个元素为 O(N), N 为插入元素个数

返回值:插入后 list 的长度。

示例:

嗯?问题来了,为什么不是1234,而是4321?

Redis的LPUSH命令会将元素按照参数的顺序从左到右插入到列表的头部 所以,当你执行以下命令时:

LPUSH ids 1 2 3 4

Redis会按照参数的顺序将1、2、3、4从左到右插入到列表ids的头部。这就是为什么你在执行LRANGE命令时得到的顺序是4321而不是1234。列表中的元素保持插入顺序,所以最后插入的元素4位于列表的最左侧,3位于4的右侧,依此类推。

LPUSHX

在 key 存在时,将⼀个或者多个元素从左侧放入(头插)到 list 中。不存在,直接返回0

语法:

 LPUSHX key element [element ...]

时间复杂度:只插入⼀个元素为 O(1), 插入多个元素为 O(N), N 为插入元素个数

返回值:插入后 list 的长度。

示例:

1. 不存在的情况

2. 存在的情况


RPUSH

将⼀个或者多个元素从右侧放入(尾插)到 list 中。

语法:

RPUSH key element [element ...]

时间复杂度:只插入⼀个元素为 O(1), 插入多个元素为 O(N), N 为插入元素个数

返回值:插入后 list 的长度。

示例:

RPUSHX

在 key 存在时,将⼀个或者多个元素从右侧放⼊(尾插)到 list 中。不存在返回0

语法:

RPUSHX key element [element ...]

时间复杂度:只插入⼀个元素为 O(1), 插入多个元素为 O(N), N 为插入元素个数

返回值:插入后 list 的长度。

示例:

LRANGE

获取从 start 到 end 区间的所有元素,左闭右闭。

语法:

LRANGE key start stop

时间复杂度:O(N)

返回值:指定区间的元素。

示例:

LPOP

从 list 左侧取出元素(即头删)。

语法:

LPOP key

时间复杂度:O(1)

返回值:取出的元素或者 nil。

示例:

RPOP

从 list 右侧取出元素(即尾删)。

语法:

RPOP key

时间复杂度:O(1)

返回值:取出的元素或者 nil。

LINDEX

获取从左数第 index 位置的元素。

语法:

LINDEX key index

时间复杂度:O(N)

返回值:取出的元素或者 nil。

LINSERT

在特定位置插入元素。

语法:

LINSERT key <BEFORE | AFTER> pivot element

时间复杂度:O(N)

返回值:插入后的 list 长度。

LLEN

获取 list 长度。

语法:

LLEN key

时间复杂度:O(1)

返回值:list 的长度。

示例:

阻塞版本命令

blpop 和 brpop 是 lpop 和 rpop 的阻塞版本,和对应非阻塞版本的作用基本⼀致,除了:

• 在列表中有元素的情况下,阻塞和非阻塞表现是⼀致的。但如果列表中没有元素,非阻塞版本会理 解返回 nil,但阻塞版本会根据 timeout,阻塞⼀段时间,期间 Redis 可以执行其他命令,但要求执行该命令的客户端会表现为阻塞状态。

• 命令中如果设置了多个键,那么会从左向右进行遍历键,⼀旦有⼀个键对应的列表中可以弹出元 素,命令立即返回。

• 如果多个客户端同时多⼀个键执行 pop,则最先执行命令的客户端会得到弹出的元素。

BLPOP

LPOP 的阻塞版本。

语法:

 BLPOP key [key ...] timeout

时间复杂度:O(1)

返回值:取出的元素或者 nil。

BRPOP

RPOP 的阻塞版本。

语法:

BRPOP key [key ...] timeout

时间复杂度:O(1)

返回值:取出的元素或者 nil。

Redis的列表命令小结

操作类型命令时间复杂度
添加rpush key value [value ...]O(k),k 是元素个数
添加lpush key value [value ...]O(k),k 是元素个数
添加linsert key before | after pivot valueO(n),n 是 pivot 距离头尾的距离
查找lrange key start end        O(s+n),s 是 start 偏移量,n 是 start 到 end 的范围
查找lindex key indexO(n),n 是索引的偏移量
查找llen keyO(1)
删除lpop keyO(1)
删除rpop keyO(1)
删除lremkey count valueO(k),k 是元素个数
删除ltrim key start endO(k),k 是元素个数
修改lset key index valueO(n),n 是索引的偏移量
阻塞操作blpop brpopO(1)

制作不易,希望大家多多支持噢~~🤗

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】线段树

算法提高课笔记 还未更新完 文章目录 原理pushupbuildmodifyquerypushdown&#xff08;懒标记 / 延迟标记&#xff09;扫描线法 原理 时间复杂度&#xff1a;O(logn) 线段树是一棵二叉树&#xff0c;把一段区间分成多个部分 类似堆的方式&#xff0c;用一维数组存整棵树 对…

远场Far-Field beamforming与近场Near-Field beamforming有何关系

这里写目录标题 UPA![在这里插入图片描述](https://img-blog.csdnimg.cn/170e1282d2d6424595263daf77707234.png)写在前面Channel Estimation for Extremely Large-Scale Massive MIMO:Far-Field, Near-Field, or Hybrid-Field?Far Field modelNear Field model UPA 写在前面…

Java内存空间(学习随笔)

1、程序运行中栈可能会出现两种错误 StackOverFlowError&#xff1a; 若栈的内存大小不允许动态扩展&#xff0c;那么当线程请求栈的深度超过当前 Java 虚拟机栈的最大深度的时候&#xff0c;就抛出 StackOverFlowError 错误。OutOfMemoryError&#xff1a; 如果栈的内存大小可…

音视频方法技术有哪些?H.265技术详解

H.265发展背景 H.264虽然是一个划时代的数字视频压缩标准&#xff0c;但是随着数字视频产业链的高速发展&#xff0c;H.264的局限性逐步显现&#xff0c;并且由于H.264标准核心压缩算法的完全固化&#xff0c;并不能够通过调整或扩充来更好地满足当前高清数字视频应用。 视频…

电子书制作软件Vellum mac中文版特点

Vellum mac是一款专业的电子书制作软件&#xff0c;它可以帮助用户将文本文件转换为高质量的电子书&#xff0c;支持多种格式&#xff0c;包括EPUB、MOBI、PDF等。Vellum具有直观的用户界面和易于使用的工具&#xff0c;可以让用户快速地创建和发布电子书。 Vellum mac软件特点…

基层医院信息管理系统源码 his系统全套成品源码带电子病历4级

基层医院his系统源码 二级医院信息管理系统源码&#xff0c;演示自主版权&#xff0c;云端SaaS服务 技术细节&#xff1a; 前端&#xff1a;AngularNginx 后台&#xff1a;JavaSpring&#xff0c;SpringBoot&#xff0c;SpringMVC&#xff0c;SpringSecurity&#xff0c;MyBa…

【MySQL】深入解析MySQL双写缓冲区

原创不易&#xff0c;注重版权。转载请注明原作者和原文链接 文章目录 为什么需要Doublewrite BufferDoublewrite Buffer原理Doublewrite Buffer和redo logDoublewrite Buffer相关参数总结 在数据库系统的世界中&#xff0c;保障数据的完整性和稳定性是至关重要的任务。为了实现…

web 基础和http 协议

一、域名 域名的概念 IP地址不易记忆&#xff0c;域名方便记住&#xff0c;以便于用户进行搜索访问 早期使用Hosts文件解析域名地址 缺点&#xff1a; ① 主机名称重复 ② 主机维护困难 DNS&#xff08;Domain Name System&#xff09;域名系统 ① 分布式 将一个大的数…

【AN-Animate教程——熟悉工作区】

【AN-Animate教程——熟悉工作区】 初始页面创建舞台主舞台界面其他常用板块 本篇内容&#xff1a;Animate用途 重点内容&#xff1a;熟悉工作区&#xff0c;以及基本操作 工 具&#xff1a;Adobe Animate 2022 初始页面 在初始页面当中&#xff0c;我们可以看到一个忍者和一个…

使用VS编译Redis源码报错

使用Redis源码版本,解压工程右键生成hiredis项目正常,编译Win32_Interop项目报下图错误(error C2039:system_error:不是std成员;error C3861: system_category:找不到标识符) 解决办法:在Win32_variadicFunctor.cpp和Win32_FDAPI.cpp添加 #include <system_error> ,再右键…

k8s 集群部署 kubesphere

一、最小化部署 kubesphere 1、在已有的 Kubernetes 集群上部署 KubeSphere&#xff0c;下载 YAML 文件: wget https://github.com/kubesphere/ks-installer/releases/download/v3.4.0/kubesphere-installer.yaml wget https://github.com/kubesphere/ks-installer/releases/…

204318-14-9,依多曲肽,DOTA-TOC

DOTA-[Tyr3]-Octreotide&#xff0c;依多曲肽,DOTA-(酪氨酸3)-奥曲肽是一种重要的多肽分子&#xff0c;其结构与奥曲肽类似&#xff0c;具有多种重要的药理作用。由于其具有大量的羧基官能团和醇羟基官能团&#xff0c;可以与各种放射性核素结合&#xff0c;因此被广泛应用于放…

基于springboot实现旅游网站管理平台系统项目【项目源码+论文说明】

基于springboot实现旅游网站平台管理系统演示 摘要 随着科学技术的飞速发展&#xff0c;网络快速发展、人民生活的快节奏都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;旅游管理系统当然也不能排除在外。旅游管理系统是以实际运用为开发背…

关于竞品分析怎么做?掌握这5点就够了!

大家好&#xff0c;我是设计师l1m0&#xff0c;今天要给大家分享的竞品分析相关知识。 在竞争激烈的市场中&#xff0c;了解竞争对手并且在产品开发和市场营销中制定明智的策略至关重要。这正是产品竞品分析的目的所在。本文将详细介绍如何进行产品竞品分析&#xff0c;以及通…

基于Springboot实现口腔牙诊所管理平台项目【项目源码+论文说明】计算机毕业设计

基于Springboot实现口腔牙诊所管理平台演示 摘要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;口腔管理平台当然也不能排除在外。口腔管理平台是以实际运用为开发背景&…

2024年浙大MBA项目必报名的三个理由

近期是2024年研究生考试网上报名的时间&#xff0c;每一位考生其实都要在这个时间段内最终确定自己的报考院校和专业&#xff0c;无论出于什么样的理由&#xff0c;杭州达立易考教育认为自己的选择都会直接关系到未来三年读书甚至于此生长期的影响&#xff0c;对于MBA等在职类考…

LiveGBS流媒体平台GB/T28181功能-国标设备通道分享手机PC浏览器观看直播

LiveGBS流媒体平台GB/T28181功能-国标设备通道分享手机PC浏览器观看直播 1、 国标设备列表1.1、 查看通道1.2、 开启分享1.3、访问分享页面 2、搭建GB28181视频直播平台 1、 国标设备列表 1.1、 查看通道 1.2、 开启分享 1.3、访问分享页面 2、搭建GB28181视频直播平台 支持 W…

PMP证书已经过续费期了,还有必要再考一次吗?

在3年内需要续费&#xff0c;并且还有一年的证书缓冲期。我认为除了必须要续费外&#xff0c;这并不是非常必要。 已经过去了4年&#xff0c;如果当初考证是因为需要找工作或公司的要求&#xff0c;那么项目管理知识应该已经掌握得差不多了。现在已经有了一份稳定的工作&#…

融资融券利率攻略,最低可以降至4.xx%!

对于融资融券业务而言并不是券商越大&#xff0c;排名越靠前&#xff0c;两融业务就越好&#xff0c;各家券商对两融业务的投入都是不一样的&#xff0c;差异也很大&#xff0c;能做到的最低利率也不尽相同&#xff0c;有的券商500w融资利率都只能做到5.5%&#xff0c;极个别券…

算法通关村第17关【白银】| 贪心高频问题

区间问题 1. 会议室&#xff08;判断区间是否重叠&#xff09; 思路&#xff1a;很容易理解一个人不可能同时出席两场会议&#xff0c;也就是会议时间不能重叠。先按照开始时间排序&#xff0c;逐个比较下一个会议开始时间是否大于前一个会议的结束时间 public static boolean…