前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【redis】list类型:基本命令(上)

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

作者头像
椰椰椰耶
发布2025-03-14 09:45:42
发布2025-03-14 09:45:42
3900
代码可运行
举报
文章被收录于专栏:学习学习
运行总次数:0
代码可运行

插入和弹出操作

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

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

获取和删除等操作

image.png
image.png

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

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

允许有重复元素

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

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

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

LPUSH/RPUSH

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

  • 依次头插

语法:

代码语言:javascript
代码运行次数:0
运行
复制
LPUSH key element [element ...]
  • 时间复杂度:
O(1)

,插入多个元素为:

O(N)

N

为插入元素个数

  • 返回值:插入后 list 的长度
  • 如果 key 已经存在,并且 key 对应的 value 类型,不是 list,此时 lpush 命令就要报错
image.png
image.png

LRANGE

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


语法:

代码语言:javascript
代码运行次数:0
运行
复制
LRANGE key start stop
  • 时间复杂度:
O(N)
  • 返回值:指定区间的元素
image.png|429
image.png|429

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

image.png|304
image.png|304

LPUSHX/RPUSHX

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


语法:

代码语言:javascript
代码运行次数:0
运行
复制
LPUSHX key element [element ...]
  • 时间复杂度:
O(1)

,插入多个元素为:

O(N)

N

为插入元素个数

  • 返回值:插入后 list 的长度
image.png|354
image.png|354

LPOP/RPOP

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


语法:

代码语言:javascript
代码运行次数:0
运行
复制
LPOP key
  • 时间复杂度:
O(1)
  • 返回值:取出的元素或者 nil
image.png|326
image.png|326

LINDEX

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


语法:

代码语言:javascript
代码运行次数:0
运行
复制
LINDEX key index
  • 时间复杂度:
O(1)
  • 返回值:取出的元素或者 nil
image.png|367
image.png|367

LINSERT

在特定位置插入元素


语法:

代码语言:javascript
代码运行次数:0
运行
复制
LINSERT key <BEFORE | AFTER> pivot element
  • 时间复杂度:
O(N)
  • 返回值:插入后的 list 长度
image.png
image.png

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-03-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 插入和弹出操作
  • 获取和删除等操作
  • 允许有重复元素
  • LPUSH/RPUSH
  • LRANGE
  • LPUSHX/RPUSHX
  • LPOP/RPOP
  • LINDEX
  • LINSERT
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档