Redis命令 - Lists命令组常用命令

先创建一个 key 叫做 mylist,mylist存一个list。

list数据类型底层是一个链表。先进后出,后进先出。

命令中的L(Left)、R(Right)代表链表的头部L(下标0的位置)和尾部R(下标length-1的位置)

list中的允许有相同的元素

1、LSET key index value

设置 index 位置的list元素的值为 value。当index超出范围时会返回一个error。

lset mylist 0 123

如果key不存在会报错

2、LINSERT key BEFORE|AFTER pivot value

作用:在list的某个元素前或者后插入某个新元素。

2.1、当 key 不存在时,这个list会被看作是空list,任何操作都不会发生,返回0

2.2、当 key 存在,正常插入元素:LINSERT key BEFORE pivot value

当前mylist中只有一个元素123

在123之前插入元素0

linsert mylist before 123 0

2.3、当 key 存在,正常插入元素:LINSERT key AFTER pivot value

当前mylist中有2个元素:【0,123】

在0后面插入一个元素12,插入成功后,mylist有3个元素:【0, 12, 123】

linsert mylist after 0 12

2.4、当key存在,但保存的不是一个list的时候,会返回error。

linsert mylist after 0 {"username":"zhangsan"}

2.5、当 pivot 值找不到的时候返回 -1。

mylist中不存在元素456,尝试在456后面插入789,就会返回-1

linsert mylist after 456 789

3、LPUSH key value value ...

一个列表从下标0开始,到下标len(list)-1结束,lpush是将一个元素或者多个元素插入到key指向的List的左侧。

3.1、若Key不存在:进行 push 操作前会创建一个空列表。

lpush mylist1 0 1

返回值:在 push 操作后的 list 长度

一下push多个元素,例如0和1,是把0和1从左到右依次push,因此先push 0,再push 1。所以等都push成功后,查看列表元素第一个是1,第2个是0

3.2、若Key存在,但key对应的不是list而是其他数据类型,返回一个错误

之前创建了一个myhash的key,key对应的hash。因此向myhash push元素时,会报错

lpush myhash 1

4、RPUSH key value value ...

一个列表从下标0开始,到下标len(list)-1结束,rpush跟lpush的区别就是,rpush是将一个元素或者多个元素插入到key指向的List的右侧。

rpush mylist 4 5 6

依次将4、5、6push到mylist的右侧,成功后返回list的长度6。查看mylist push后的元素排列如下。

5、LPUSHX key value value...

LPUSHX 比 LPUSH多了一个X,这个X代表Exist,因此LPUSHX的作用是,仅当key已经存在且存着一个list的时候,才将值插入到list的头部。如果key不存在时,不做任何操作。

lpushx mylist2 1

mylist2不存在,因此什么也不做,返回值0

lpushx mylist -1

mylist存在,且存着一个list,因此push成功,返回list长度

查看操作后的mylist,-1成功插到了mylist头部

此命令同样可以push多个元素。

6、RPUSHX key value value...

RPUSHX与LPUSHX命令的唯一区别是,当key存在且存着一个list的时候,是插到list的尾部。同样当key不存在的时候,什么也不做

rpushx mylist2 1

mylist2不存在,因此什么也不做,返回值0

rpushx mylist -2 -3

mylist存在,且存着一个list,因此push成功,返回list长度

查看操作后的mylist,-2和-3成功插到了mylist尾部

7、LPOP key

移除并且返回 key 对应的 list 的第一个元素 。

若key存在返回第一个元素的值,或者当 key 不存在时返回null。

lpop mylist2

lpop mylist

mylist2不存在,返回null,mylist存在且第一个元素是-1,弹出成功后,返回了此元素值-1

8、RPOP key

RPOP跟LPOP的区别仅在于是移除并获取列表的最后一个元素。

rpop mylist2

rpop mylist

mylist2不存在,返回null,mylist存在且最后一个元素是-3,弹出成功后,返回了此元素值-3

9、LLEN key

若key存在且存着一个list,则返回list的长度,否则返回0

10、LINDEX key index

根据index获取list中的元素。如果index越界返回null,如果在范围内,返回对应的元素值。当key存的不是一个list时,报错。

lindex myhash 0

myhash存的不是list,将会报错

lindex mylist 3

mylist中有7个元素。第3个元素是4。若想访问第8个元素,就超出了范围,会返回null

11、LRANGE key start stop

返回存储在key的列表里指定范围内的元素。start和stop偏移量都是基于0的下标。偏移量也可以是负数,列表尾部即最后一个元素是-1,倒数第二个元素是-2,以此类推。

例如,mylist长度是7,想获取整个列表的元素有两种方式。

lrange mylist 0 7 或者 lrange mylist 0 -1

lrange mylist 3 8

如果stop偏移量大于list的长度,那就取到列表最后的一个元素为止。

如果stop偏移量小于start偏移量,那就不会做任何操作。

相关推荐
时间售卖铺1 小时前
触发器与函数实战:MySQL高效编程秘诀
运维·数据库·mysql·云原生
qetfw1 小时前
UOS MariaDB 数据库:安装、最小权限与备份验证
linux·数据库·mariadb·uos
数智园区合作社2 小时前
问数平台怎么把同一个指标锁成一个数
大数据·数据库·人工智能·ai
BIBI20492 小时前
换 Git 托管平台怎么做?基于 TortoiseGit 的跨平台迁移教程
windows·git·tortoisegit·问题解决·版本控制·最佳实践
lbb 小魔仙2 小时前
Windows搭建PaddleOCR+飞书Webhook自动打卡通知机器人:识别、推送与远程触发完整教程
数据库·人工智能·prometheus·时序数据库
chushiyunen2 小时前
autoHotKey、windows自动化快捷键工具
运维·windows·自动化
captain3763 小时前
MyBatis操作数据库(入门2)
java·数据库·spring boot·后端·spring·mybatis
心中有你02144 小时前
Java实现Dijkstra最短路径算法(邻接表 + 优先队列)
java·数据库·算法
燃烧的枫4 小时前
Windows 下 YOLO11 Det 的 TensorRT C++ 部署
pytorch·windows·tensorrt·关键点识别·yolo11
龙亘川4 小时前
综合素质评价业务建模:从过程性评价到成长档案全链路闭环
数据库·智慧城市·数据可视化