Redis中的list类型命令详解

List

Redis 中的 list 是一个双端链表结构, 常用于栈, 队列, 消息队列等场景

list 对两端的操作性能很高, 通过索引下标的操作中间的节点性能会较差

key 不存在, 创建新的链表

key 存在, 新增内容

若将 key 对应的 value 全部移除, 对应的 key 就被删除

其中值得注意的是 list 与编程语言中的数组一样, 索引是从 0 开始的

LPUSH

将所有指定的值插入到 存储在 的list的 左边。 如果不存在,则在执行推送之前将其创建为空list 操作。 若执行的 key 对象不是list时,将返回错误。

即将指定的值依次添加到 list 左边

语法:

LPUSH key element [element ...]

LPUSHX

仅在已存在并保存list时,在存储在 的list的左边插入指定的值。 与 LPUSH相反,当 尚未 时,将不执行任何作 存在。

语法:

LPUSHX key element [element ...]

RPUSH

将所有指定的值插入到 存储在 的list的右边。 如果不存在,则在执行推送之前将其创建为空list 操作。 若执行的 key 对象不是list时,将返回错误。

即将指定的值依次添加到 list 右边

语法:

RPUSH key element [element ...]

RPUSHX

仅在已存在并保存list时,才在存储在 中的list右边插入指定的值。 与 RPUSH 相反,当 尚未 时,将不执行任何作 存在。

语法:

RPUSHX key element [element ...]

LRANGE

从左往右依次遍历从 start 到 end 的 list 的元素

语法:

LRANGE key start stop
# 常用命令
LRANGE key 0 -1

LPOP

删除并返回存储在 中的list的左边第一个元素。

默认情况下,该命令从list的左边删除单个元素。 当提供可选参数时,命令从list的左边删除指定数量的 value,具体取决于list的长度。

语法:

LPOP key [count]

例:

127.0.0.1:6379> lrange list_a 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
127.0.0.1:6379> lpop list_a 3
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> lrange list_a 0 -1
1) "4"
2) "5"
3) "6"

RPOP

删除并返回存储在 中的list的右边边第一个元素。

默认情况下,该命令从list的右边删除单个元素。 当提供可选参数时,命令从list的右边删除指定数量的 value,具体取决于list的长度。

语法:

RPOP key [count]

LINDEX

返回存储在 中的list中 index 处的元素。 索引从零开始,且可以使用负数表示倒数第 n 个索引的元素。

语法:

LINDEX key index

LLEN

获取 list 中元素的个数, 如果不存在,则将其解释为空 list 并返回。当指定的 key 不是 list 时, 将报错.

语法:

LLEN key

LREM

list 中删除指定个数的指定值

语法:

LREM key count element

参数解释:

  • count

    :这个参数决定了要移除多少个匹配的元素:

    • 如果 count > 0,则从list的左侧向右开始移除最多 count 个匹配的元素。
    • 如果 count < 0,则从list的右侧向左开始移除最多 |count| 个匹配的元素(这里的 |count| 表示 count 的绝对值)。
    • 如果 count = 0,则移除所有与给定 element 相匹配的元素,无论它们在list中的位置如何。
  • element:这是你想要从list中移除的值。

LTRIM

list 中的 value 进行切片, 使其只保留指定范围内的元素。

语法:

LTRIM key start end

LMOVE

list1 的一个或多个元素移动至 list2 中, 此操作可以在同一个 list 中进行, 也可以在不同的 list 中进行, 这个命令是原子性的, 整个操作是在一个步骤中完成的,从而避免了并发环境下的竞态条件。

语法:

LMOVE source destination LEFT|RIGHT LEFT|RIGHT

参数解释:

  • source:源list的键名。

  • destination:目标list的键名。

  • LEFT|RIGHT:指定从源list和向目标list中添加元素的方向。可以组合使用

    来指定具体的操作方向:

    • 第一个方向(LEFT|RIGHT)指定了从源list中删除元素的方向。
    • 第二个方向(LEFT|RIGHT)指定了向目标list中添加元素的方向。

LSET

更新 list 中指定索引位置的元素.

语法:

LSET key index value

参数解释:

  • index:你想要修改的元素在list中的索引位置。可以使用正数来从list头部开始计数(0为第一个元素),或者使用负数从list尾部开始计数(-1为最后一个元素)。
  • value:新的值,将被放置在由 index 指定的位置上。

LINSERT

list 中某个特定值的前面或后面插入一个新元素。此命令适用于不改变 list 其他

部分元素的情况下添加元素。

语法:

LINSERT key BEFORE|AFTER pivot value

参数解释:

  • BEFORE|AFTER:指定新元素应该插入到 pivot 元素之前还是之后。
  • pivot:这是你想要在其之前或之后插入新元素的目标值。
  • value:这是你想要插入的新元素的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值