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

发布时间:2024年01月14日

先创建一个 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偏移量,那就不会做任何操作。
在这里插入图片描述

文章来源:https://blog.csdn.net/weixin_44691253/article/details/135577344
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。