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:这是你想要插入的新元素的值。
1788

被折叠的 条评论
为什么被折叠?



