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

【redis】list类型:基本命令(上)

文章目录

  • 插入和弹出操作
  • 获取和删除等操作
  • 允许有重复元素
  • LPUSH/RPUSH
  • LRANGE
  • LPUSHX/RPUSHX
  • LPOP/RPOP
  • LINDEX
  • LINSERT

插入和弹出操作

列表(list)相当于数组或者顺序表image.png

  • 约定最左侧元素下标为 0
  • Redis 的下标支持负数下标(从后往前数)
  • list 内部的结果(编码方式),并非是一个简单的数组,而是更接近于“双端队列”(deque

获取和删除等操作

image.png

列标中的元素是“有序“的,有序的含义,要根据上下文区分

  • 有的时候,指的是“升序”,“降序”
  • 有的时候,指的是,顺序很关键。如果把元素位置颠倒,顺序调换,此时得到的新的 list 和之前的 list 是不等价的

允许有重复元素

image.png

  • hash 这样的类型,field 是不能重复的
  • 因为当前的 list,头和尾都能高效的插入删除元素,就可以把这个 list 当做一个栈/队列来使用了

Redis 有一个典型的应用场景,就是作为“消息队列

  • 最早的时候,就是通过 list 类型来实现的
  • 后来 Redis 又提供了一个 stream 类型

LPUSH/RPUSH

将一个或者多个元素从左/右侧放入(头/尾插)到 list

  • 依次头插

语法:

LPUSH key element [element ...]
  • 时间复杂度: O ( 1 ) O(1) O(1),插入多个元素为: O ( N ) O(N) O(N) N N N 为插入元素个数
  • 返回值:插入后 list 的长度
  • 如果 key 已经存在,并且 key 对应的 value 类型,不是 list,此时 lpush 命令就要报错 image.png

LRANGE

获取从 startend 区间的所有元素,左闭右闭


语法:

LRANGE key start stop
  • 时间复杂度: O ( N ) O(N) O(N)
  • 返回值:指定区间的元素image.png|429

当在 Redis 中下标超出范围的时候,Redis 会直接尽可能的获取到给定区间的元素。如果给定区间非法,比如超出小标,就会尽可能的获取对应的内容image.png|304

LPUSHX/RPUSHX

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


语法:

LPUSHX key element [element ...]
  • 时间复杂度: O ( 1 ) O(1) O(1),插入多个元素为: O ( N ) O(N) O(N) N N N 为插入元素个数
  • 返回值:插入后 list 的长度image.png|354

LPOP/RPOP

list 左/右侧取出元素(即头/尾删)


语法:

LPOP key
  • 时间复杂度: O ( 1 ) O(1) O(1)
  • 返回值:取出的元素或者 nilimage.png|326

LINDEX

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


语法:

LINDEX key index
  • 时间复杂度: O ( 1 ) O(1) O(1)
  • 返回值:取出的元素或者 nilimage.png|367

LINSERT

在特定位置插入元素


语法:

LINSERT key <BEFORE | AFTER> pivot element
  • 时间复杂度: O ( N ) O(N) O(N)
  • 返回值:插入后的 list 长度image.png

万一插入元素的时候,基准值有多个,就找第一个基准值

相关文章:

  • 深入浅出:HTML 中 <a> 标签嵌入链接教程
  • 并行算法_第十章_《C++并发编程实战》笔记
  • 创客匠人创始人IP变现大课将于3月在成都举办 助力知识付费转型
  • redis数据库
  • Seq2Seq:让机器学会同声传译的魔法架构
  • 上下文微调(Contextual Fine-Tuning, CFT)提高大型语言模型(LLMs)在特定领域的学习和推理能力
  • ​2024华为OD机试真题-太阳能板最大面积(C++)-E卷B卷-100分
  • MySQL 企业版 TDE加密后 测试和问题汇总
  • 切换数据库连接池
  • OpenBMC:BmcWeb 处理http请求
  • Tomcat 安装
  • FX-std::set
  • LLM的准确率评估采用什么方式:准确率评估使用的是 `sklearn.metrics` 模块中的 `accuracy_score` 函数
  • 日常开发记录-radioGroup组件
  • 【并发编程】JUC常用类以及线程池
  • 在Simulink中将Excel数据导入可变负载模块的方法介绍
  • Docker Swarm 集群操作实践
  • django框架 [面试篇]
  • python-leetcode-最大连续1的个数 III
  • 【leetcode hot 100 146】LRU缓存
  • 网站通常用什么编程做/b2b平台有哪些平台
  • 哪个网站能上传自己做的简历/网络营销师证书怎么考
  • 欧美设计网站推荐/百度推广手机版
  • 一个公司做多个网站是好还是坏/广东seo推广外包
  • 网络绿化网站建设哪家权威/seo网站推广优化
  • 做网站的价格 外贸/武汉百度