这里只是介绍命令使用

列表是用来存储多个有序的字符串

可以用来充当栈和队列的角色

列表特点:

  1. 列表中的元素是有序的,可以通过索引下标来获取某个元素或者某个范围的元素

  2. 获取和删除有区别

  3. 元素可以重复

命令

LPUSH

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

lpush key element {element ……}

时间复杂度: O(N) N表示插入的元素个数

返回值: 插入新对象之后 list 的长度

LPUSHX

在 key 存在的时候,将一个或者多个元素从左侧放入,不存在就会直接返回

lpushx key element {element……}

时间复杂度: O(N) N表示插入的元素个数

返回值: 插入后 list 的长度, key 不存在就是返回 0

RPUSH

将一个或者多个元素从右侧进行插入(尾插)

rpush key element {element……}

时间复杂度: O(N) N为插入的元素个数

返回值: 插入后 list 的长度

RPUSHX

在 key 存在时,将一个或者多个元素从右侧插入,和 lpushx 类似

rpushx key element {element……}

时间复杂度: O(N) N为插入的元素个数

返回值: 插入后 list 的长度

LRANGE

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

lrange key start end

时间复杂度: O(N)

返回值: 指定区间的元素

LPOP

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

lpop key

时间复杂度: O(1)

返回值: 对应取出的元素,如果没有元素或者key不存在返回 nil

RPOP

从 list 右侧取出对应元素(尾删),其余与 LPOP 相似

rpop key

时间复杂度: O(1)

返回值: 对应取出的元素,如果没有元素或者key不存在返回 nil

LINDEX

获取对应下标的元素(从左往右数)

lindex key value

时间复杂度: O(N)

返回值: 下标对应的元素或者 nil

LINSERT

在指定位置插入元素

linsert key {before | after} pivot(要插入的位置) element

时间复杂度: O(N)

返回值: 插入之后list的新长度

LLEN

获取 list 长度

llen key

时间复杂度: O(1)

返回值: list 的具体长度

阻塞版命令

区别

  1. 在 list 中有元素的情况下,阻塞版和非阻塞版的结果是一致的

  2. 如果没有元素,非阻塞版会直接返回 nil ,阻塞版会根据 timeout 来进行一段时间的阻塞,在此期间 redis 可以执行其他命令,但是对应被阻塞了的客户端还是会表示为阻塞状态

  3. 命令中如果设置了多个键,那么会从左向右遍历,一旦对应上就会弹出元素,并立即返回

  4. 如果多个客户端同时对一个键执行 pop ,那么只有最先执行的客户端可以得到弹出的元素

命令

BLPOP

LPOP的阻塞版

blpop key {key……} timeout

时间复杂度: O(1)

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

BRPOP

RPOP的阻塞版

brpop key {key……} timeout

时间复杂度: O(1)

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

命令总结

操作

命令

时间复杂度

添加

rpush key value [value ...]

O(k),k 是插入的元素个数

lpush key value [value ...]

O(k),k 是插入的元素个数

linsert key before|after pivot value

O(n),n 是 pivot 距离头或尾的偏移量

查找

lrange key start end

O(s + n),s 是 start 偏移量,n 是范围长度

lindex key index

O(n),n 是索引的偏移量

llen key

O(1)

删除

lpop key

O(1)

rpop key

O(1)

lrem key count value

O(k),k 是列表元素个数(需遍历)

ltrim key start end

O(k),k 是需保留的元素个数

修改

lset key index value

O(n),n 是索引的偏移量

阻塞版

blpop key [key ...] timeout

O(1)

brpop key [key ...] timeout

O(1)

内部编码

  • 当元素个数比较小同时没有较大元素时,是 ziplist

  • 但是有时会显示为 quicklist (redis 的默认链表实现)

  • 当元素个数超过 512 时,是 linkedlist

  • 当某个元素长度超过 64 字节时,是 linkedlist

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Business English Certificates (BEC) 高频词汇背诵

Business English Certificates {BEC} 高频词汇背诵 References Cambridge English: Business Certificates, also known as Business English Certificates (BEC), are a suite of three English language qualifications for international business. abandon /əˈbndən/ …

第十四届蓝桥杯省赛真题解析(含C++详细源码)

第十四届蓝桥杯省赛 整数删除满分思路及代码solution1 (40% 双指针暴力枚举)solution 2(优先队列模拟链表 AC) 冶炼金属满分代码及思路 子串简写满分思路及代码solution 1(60% 双指针)solution 2&#xff0…

AI Agent开发大全第二十一课-如何开发一个MCP(从0开发一个MCP Client)

开篇 上一章《AI Agent开发大全第二十课-如何开发一个MCP(从0开发一个MCP Server)》里我们讲了如何从0开始开发一个MCP Server。可以看到文中大量细节为MCP发明者官网Claude都不曾或者是遗漏的,而且还有那么多点遗漏,想要真正要在企业生产级环境使用MCP是需要做分布式开发的…

TypeScript面试题集合【初级、中级、高级】

初级面试题 什么是TypeScript? TypeScript是JavaScript的超集,由Microsoft开发,它添加了可选的静态类型和基于类的面向对象编程。TypeScript旨在解决JavaScript的某些局限性,比如缺乏静态类型和基于类的面向对象编程&#xff0c…

无锡无人机驾驶证培训费用

无锡无人机驾驶证培训费用,随着科技的迅速发展,无人机在众多行业中发挥着举足轻重的作用。从影视制作到农业监测,再到物流运输与城市规划,无人机的应用场景不断扩展,因此越来越多的人开始意识到学习无人机驾驶技能的重…

2181、合并零之间的节点

2181、[中等] 合并零之间的节点 1、问题描述: 给你一个链表的头节点 head ,该链表包含由 0 分隔开的一连串整数。链表的 开端 和 末尾 的节点都满足 Node.val 0 。 对于每两个相邻的 0 ,请你将它们之间的所有节点合并成一个节点&#xff…

相机的曝光和增益

文章目录 曝光增益增益原理主要作用增益带来的影响增益设置与应用 曝光 参考:B站优致谱视觉 增益 相机增益是指相机在拍摄过程中对图像信号进行放大的一种操作,它在提高图像亮度和增强图像细节方面起着重要作用,以下从原理、作用、影响以…

小飞电视 2.7.0 | 高清秒播无卡顿的电视直播软件

小飞电视采用了流行的天光YY壳进行二次开发,内置了热门的肥羊源。更新后在加载速度和播放速度上有了显著提升,并提供了丰富的内容和各种分类栏目,包括4K和8K频道以及经典的直播内容如虎芽、斗鱼、歪歪等。该软件的最大特点是其稳定性和无广告…

【Python爬虫高级技巧】BeautifulSoup高级教程:数据抓取、性能调优、反爬策略,全方位提升爬虫技能!

大家好,我是唐叔!上期我们聊了 BeautifulSoup的基础用法 ,今天带来进阶篇。我将分享爬虫老司机总结的BeautifulSoup高阶技巧,以及那些官方文档里不会告诉你的实战经验! 文章目录 一、BeautifulSoup性能优化技巧1. 解析…

【愚公系列】《高效使用DeepSeek》055-可靠性评估与提升

🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! 👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"…

C# Winform 入门(12)之制作简单的倒计时

倒计时效果展示 控件展示 以下均是使用label来形成的 label 的 BorderStyle:Fixed3D ForeColor:Red Blackground:Black label 的属性 Name: txtyear txtmonth txtday txttime txtweek txtDays txtHour txtM…

edge webview2 runtime跟Edge浏览器软件安装包双击无反应解决方法

软件安装报错问题有需要远程文章末尾获取联系方式,可以帮你远程处理各类安装报错。 一 、edge webview2 runtime跟Edge浏览器软件安装包双击无反应 在安装edge webview2 runtime跟Edge浏览器双击无反应没有出现安装界面。这个可能是 新版本的Edge WebView2 Runti…

TDengine 从入门到精通(2万字长文)

目录 第一章:走进 TDengine 的世界 TDengine 是个啥? TDengine 的硬核特性 性能炸裂 分布式架构,天生可扩展 SQL 用起来贼顺手 写入方式花样多 内置缓存,省心又省力 TDengine 能干啥? 智能制造 能源管理 物联网平台 工业大数据 第二章:上手 TDengine:安装与…

keil5忽略警告

目录 前言 风险不多做赘述。强迫症患者使用。警告有时候就是问题关键,被屏蔽了就不会在意。小心使用 环境: 芯片:STM32F103C8T6 Keil:V5.35.0.2 一、示例 警告内容如下: 二、解决办法 1.先看这位 MDK-Keil AC6 …

【Linux】iptables命令的基本使用

语法格式 iptables [-t 表名] 管理选项 [链名] [条件匹配] [-j 目标动作或跳转]注意事项 不指定表名时,默认使用 filter 表不指定链名时,默认表示该表内所有链除非设置规则链的缺省策略,否则需要指定匹配条件 设置规则内容 -A&#xff1a…

MyBatis查询语句专题、动态SQL、MyBatis的高级映射及延迟加载

一、MyBatis查询语句专题 模块名:mybatis-008-select 打包方式:jar 引入依赖:mysql驱动依赖、mybatis依赖、logback依赖、junit依赖。 引入配置文件:jdbc.properties、mybatis-config.xml、logback.xml 创建pojo类&#xff1a…

Visual Studio Code SSH 连接超时对策( keep SSH alive)

文章目录 问题解决方法一&#xff1a;配置服务端关于ClientAliveInterval和ClientAliveCountMax1、打开终端&#xff0c;打开SSH配置文件&#xff1a;输入以下命令&#xff1a;2、打开配置文件后&#xff0c;添加以下内容&#xff1a;3、添加后&#xff0c;Esc按 <Enter>…

学透Spring Boot — 014. Spring MVC的自动配置

这是学透Spring Boot的第14篇文章&#xff0c;更多文章请移步我的专栏&#xff1a; 学透 Spring Boot_postnull咖啡的博客-CSDN博客 目录 没有Spring Boot时的Spring MVC 使用Spring Boot后的Spring MVC Spring MVC的自动配置解析 明确目标 入口类 Spring容器的启动 S…

SQL语句(三)—— DQL

目录 基本语法 一、基础查询 1、查询多个字段 2、字段设置别名 3、去除重复记录 4、示例代码 二、条件查询 1、语法 2、条件列表常用的运算符 3、示例代码 三、分组查询 &#xff08;一&#xff09;聚合函数 1、介绍 2、常见的聚合函数 3、语法 4、示例代码 &…

LENOVO联想ThinkBook 16 G6 ABP(21KK)恢复预装OEM原厂Win11系统镜像

适用机型&#xff1a;【21KK】 链接&#xff1a;https://pan.baidu.com/s/1lbvIh4KTbqm8EZQZfxvNIQ?pwd7vp0 提取码&#xff1a;7vp0 联想原装系统自带所有驱动、出厂主题壁纸、系统属性联机支持标志、Office办公软件、联想浏览器、联想电脑管家、联想软件商店、联想智能引…