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偏移量,那就不会做任何操作。

相关推荐
m0_748233888 分钟前
SQL语句整理五-StarRocks
数据库·sql
州周19 分钟前
Ftp目录整个下载
linux·服务器·数据库
码农君莫笑23 分钟前
使用blazor开发信息管理系统的应用场景
数据库·信息可视化·c#·.net·visual studio
NiNg_1_23431 分钟前
Echarts连接数据库,实时绘制图表详解
前端·数据库·echarts
Azoner1 小时前
postgresql安装部署(linux)
数据库·postgresql
ue星空1 小时前
Windbg常用命令
windows
PyAIGCMaster1 小时前
文本模式下成功。ubuntu P104成功。
服务器·数据库·ubuntu
xo198820111 小时前
鸿蒙人脸识别
redis·华为·harmonyos
drebander1 小时前
MySQL 查询优化案例分享
数据库·mysql
初晴~2 小时前
【Redis分布式锁】高并发场景下秒杀业务的实现思路(集群模式)
java·数据库·redis·分布式·后端·spring·