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

相关推荐
静听山水11 分钟前
mysql语句执行过程
数据库·mysql
虽千万人 吾往矣30 分钟前
golang gorm
开发语言·数据库·后端·tcp/ip·golang
mariokkm1 小时前
Django一分钟:在Django中怎么存储树形结构的数据,DRF校验递归嵌套模型的替代方案
数据库·django·sqlite
weixin_419349791 小时前
windows上安装python环境
windows
天上掉下来个程小白1 小时前
Stream流的中间方法
java·开发语言·windows
暮雪倾风2 小时前
【WPF开发】控件介绍-Grid(网格布局)
windows·wpf
Jay_fearless2 小时前
Redis SpringBoot项目学习
spring boot·redis
Wang's Blog2 小时前
Redis: 集群环境搭建,集群状态检查,分析主从日志,查看集群信息
数据库·redis
容器( ु⁎ᴗ_ᴗ⁎)ु.。oO2 小时前
MySQL事务
数据库·mysql
sukalot3 小时前
windows C++-windows C++-使用任务和 XML HTTP 请求进行连接(二)
c++·windows