admin管理员组

文章数量:1037775

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

插入和弹出操作

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

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

获取和删除等操作

image.png

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

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

允许有重复元素

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

LRANGE

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


语法:

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

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

image.png|304

LPUSHX/RPUSHX

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


语法:

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

,插入多个元素为:

O(N)

N

为插入元素个数

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

LPOP/RPOP

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


语法:

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

LINDEX

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


语法:

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

LINSERT

在特定位置插入元素


语法:

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

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

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

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

插入和弹出操作

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

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

获取和删除等操作

image.png

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

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

允许有重复元素

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

LRANGE

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


语法:

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

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

image.png|304

LPUSHX/RPUSHX

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


语法:

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

,插入多个元素为:

O(N)

N

为插入元素个数

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

LPOP/RPOP

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


语法:

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

LINDEX

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


语法:

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

LINSERT

在特定位置插入元素


语法:

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

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

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

本文标签: redislist类型基本命令(上)