1list数据类型概述

数据存储需求:存储多个数据,并对数据进行存储空间的顺序进行区分需要的数据结构。一个存储空间保存多个数据,且通过数据可以体现进入顺序list类型。保存多个数据,底层使用双向链表存储结构实现

2list类型数据的基本操作

添加 / 修改数据:lpush key value value1 | rpush key value value1

获取数据:lrange key start end | lindex key index | llen key

删除数据:rpop key | lpop key

3list类型数据的扩展操作

在规定时间内获取并移除数据:blpop key1 key2 timeout | brpop key1 key2 timeout

4list业务场景

在上边我们知道了list的基础操作 执行 lpop key 或者 rpop key可以从左或者从右进行删除,比如朋友圈点赞业务。

5list类型的操作配置

所有的list命令都是用l开头的,Redis不区分大小命令

# 将一个值或者多个值,插入到列表头部 (左)

127.0.0.1:6379> LPUSH list one

Redis数据类型之List_存储空间

127.0.0.1:6379> LPUSH list two

Redis数据类型之List_存储空间_02

127.0.0.1:6379> LPUSH list three

Redis数据类型之List_扩展操作_03

127.0.0.1:6379> LRANGE list 0 -1 # 获取list中值!

Redis数据类型之List_扩展操作_04

127.0.0.1:6379> LRANGE list 0 1 # 通过区间获取具体的值!

Redis数据类型之List_扩展操作_05

127.0.0.1:6379> Rpush list right # 将一个值或者多个值,插入到列表位部 (右)

Redis数据类型之List_扩展操作_06

127.0.0.1:6379> LRANGE list 0 -1

Redis数据类型之List_存储空间_07

#LPOP

#RPOP

127.0.0.1:6379> LRANGE list 0 -1

Redis数据类型之List_存储空间_08

127.0.0.1:6379> Lpop list # 移除list的第一个元素

Redis数据类型之List_存储空间_09

127.0.0.1:6379> Rpop list # 移除list的最后一个元素

Redis数据类型之List_扩展操作_10

127.0.0.1:6379> LRANGE list 0 -1

Redis数据类型之List_数据_11

#Lindex

127.0.0.1:6379> LRANGE list 0 -1

Redis数据类型之List_扩展操作_12

127.0.0.1:6379> lindex list 1 # 通过下标获得 list 中的某一个值!

Redis数据类型之List_数据_13

127.0.0.1:6379> lindex list 0

Redis数据类型之List_扩展操作_14

#Llen

127.0.0.1:6379> Lpush list one

Redis数据类型之List_扩展操作_15

127.0.0.1:6379> Lpush list two

Redis数据类型之List_存储空间_16

127.0.0.1:6379> Lpush list three

Redis数据类型之List_扩展操作_17

127.0.0.1:6379> Llen list # 返回列表的长度

Redis数据类型之List_扩展操作_18

#移除指定的值!

#取关 uid

#Lrem

127.0.0.1:6379> LRANGE list 0 -1

Redis数据类型之List_数据_19

127.0.0.1:6379> lrem list 1 one # 移除list集合中指定个数的value,精确匹配

Redis数据类型之List_存储空间_20

127.0.0.1:6379> LRANGE list 0 -1

Redis数据类型之List_数据_21

127.0.0.1:6379> lrem list 1 three

Redis数据类型之List_数据_22

127.0.0.1:6379> LRANGE list 0 -1

Redis数据类型之List_存储空间_23

127.0.0.1:6379> Lpush list three

Redis数据类型之List_存储空间_24

127.0.0.1:6379> lrem list 2 two

Redis数据类型之List_扩展操作_25

127.0.0.1:6379> LRANGE list 0 -1

Redis数据类型之List_存储空间_26

#trim 单词意思:修剪;

127.0.0.1:6379> flushdb

127.0.0.1:6379> keys *

Redis数据类型之List_数据_27

127.0.0.1:6379> Rpush mylist "hello"

Redis数据类型之List_存储空间_28

127.0.0.1:6379> Rpush mylist "hello1"

Redis数据类型之List_存储空间_29

127.0.0.1:6379> Rpush mylist "hello2"

Redis数据类型之List_存储空间_30

127.0.0.1:6379> Rpush mylist "hello3"

Redis数据类型之List_扩展操作_31

127.0.0.1:6379> ltrim mylist 1 2 # 通过下标截取指定的长度,这个list已经被改变了,截断了只剩下截取的元素!

Redis数据类型之List_存储空间_32

127.0.0.1:6379> LRANGE mylist 0 -1

Redis数据类型之List_数据_33

rpoplpush # 移除列表的最后一个元素,将他移动到新的列表中!

127.0.0.1:6379> flushdb

127.0.0.1:6379> rpush mylist "hello"

Redis数据类型之List_数据_34

127.0.0.1:6379> rpush mylist "hello1"

Redis数据类型之List_扩展操作_35

127.0.0.1:6379> rpush mylist "hello2"

Redis数据类型之List_数据_36

127.0.0.1:6379> rpoplpush mylist myotherlist # 移除列表的最后一个元素,将他移动到新的列表中!

Redis数据类型之List_存储空间_37

127.0.0.1:6379> lrange mylist 0 -1 # 查看原来的列表

Redis数据类型之List_存储空间_38

127.0.0.1:6379> lrange myotherlist 0 -1 # 查看目标列表中,确实存在改值!

Redis数据类型之List_存储空间_39

lset 将列表中指定下标的值替换为另外一个值,更新操作

127.0.0.1:6379> EXISTS list # 判断这个列表是否存在

Redis数据类型之List_存储空间_40

127.0.0.1:6379> lset list 0 item # 如果不存在列表我们去更新就会报错

Redis数据类型之List_存储空间_41

127.0.0.1:6379> lpush list value1

Redis数据类型之List_数据_42

127.0.0.1:6379> LRANGE list 0 0

Redis数据类型之List_数据_43

127.0.0.1:6379> lset list 0 item # 如果存在,更新当前下标的值

Redis数据类型之List_数据_44

127.0.0.1:6379> LRANGE list 0 0

Redis数据类型之List_扩展操作_45

127.0.0.1:6379> lset list 1 other # 如果不存在,则会报错!

Redis数据类型之List_数据_46

linsert # 将某个具体的value插入到列把你中某个元素的前面或者后面

127.0.0.1:6379> flushdb

127.0.0.1:6379> Rpush mylist "hello"

Redis数据类型之List_数据_47

127.0.0.1:6379> Rpush mylist "world"

Redis数据类型之List_存储空间_48

127.0.0.1:6379> LINSERT mylist before "world" "other"

Redis数据类型之List_扩展操作_49

127.0.0.1:6379> LRANGE mylist 0 -1

Redis数据类型之List_数据_50

127.0.0.1:6379> LINSERT mylist after world new

Redis数据类型之List_数据_51

127.0.0.1:6379> LRANGE mylist 0 -1

Redis数据类型之List_数据_52