Redis系列(四)、数据类型之列表List

目录

介绍

命令行模式

应用

栈:先进后出

队列:先进先出

有限集合

消息队列


Redis支持五种数据类型:String, Hash, List, Set, ZSet,这个系列介绍一下如何使用这些数据类型,本篇介绍使用命令行模式以及python客户端对redis进行操作,实际项目的过程中也大多是一模一样的用法。

相关内容:

Redis系列(一)、CentOS7下安装Redis6.0.3稳定版

Redis系列(二)、数据类型之字符串String 

Redis系列(三)、数据类型之哈希Hash

------------------------Redis列表类型----------------------

介绍

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)一个列表最多可以包含 2^32 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

因此也有项目直接使用redis做消息队列,我们之前介绍filebeat+logstash+redis的时候也使用redis存储filebeat采集的日志进redis的列表类型中,由logstash从其中消费,传送门。

 

命令行模式

进入命令行模式:

redis-cli -a password_value

redis-cli -a password_value --raw
--raw 避免中文显示乱码

 

help

使用下面的命令查看手册:

help @list

Redis系列(四)、数据类型之列表List_第1张图片

lpush

从左边插入元素,从左边依次追加进栈,先进后出,后进先出:

LPUSH key element [element ...]

lpush mylist 'wyk'
lpush mylist '28' 'csdn' '[email protected]'

Redis系列(四)、数据类型之列表List_第2张图片

rpush

从右边插入元素,从右边依次追加进队列,先进先出,后进后出:

RPUSH key element [element ...]

rpush mylist2 'wyk'
rpush mylist2 '28' 'csdn' '[email protected]'

 Redis系列(四)、数据类型之列表List_第3张图片

lpushx

与sting类型中的nx类似,只有当list存在时才会从左边依次追加元素:

LPUSHX key element [element ...]

 Redis系列(四)、数据类型之列表List_第4张图片

rpushx

与lpushx类似,只有当list存在时才会从右边依次追加元素:

RPUSHX key element [element ...]

linsert

从list中指定的元素的前/后 插入一个新元素:

LINSERT key BEFORE|AFTER pivot element

 Redis系列(四)、数据类型之列表List_第5张图片

lrem

从列表左侧开始移除count个指定的元素,返回删除的个数:

LREM key count element

lrem mylist2 1 wyk
lrem mylist2 2 new_val
lrem mylist2 3 new_val2

 Redis系列(四)、数据类型之列表List_第6张图片

lset

根据下标修改元素内容,下标从左边算起,以0开始:

LSET key index element

Redis系列(四)、数据类型之列表List_第7张图片

ltrim

将原列表截取为从下标start到下标stop闭区间的列表,即原列表变为一个第start+1个到第stop+1个元素的列表:

LTRIM key start stop

 Redis系列(四)、数据类型之列表List_第8张图片

llen

查看列表中元素的个数:

LLEN key

Redis系列(四)、数据类型之列表List_第9张图片

lrange 

根据起止下标查询列表元素,负数表示从后往前,跟python里一样:

LRANGE key start stop

lrange key 0 -1 #表示查看全部元素
lrange key -1 -1 #表示查看最右边的元素

 Redis系列(四)、数据类型之列表List_第10张图片

lindex

根据指定的index下标查看列表中的元素,下标从0开始:

LINDEX key index

 Redis系列(四)、数据类型之列表List_第11张图片

lpop

从左边消费列表中的元素,消费完之后从列表中删除:

LPOP key

Redis系列(四)、数据类型之列表List_第12张图片

rpop

从右边消费列表中的元素,消费完之后从列表中删除:

RPOP key

Redis系列(四)、数据类型之列表List_第13张图片

rpoplpush

消费列表A的最右边的元素返回,然后追加到列表B的最左边:

RPOPLPUSH source destination

RPOPLPUSH List_A List_B

Redis系列(四)、数据类型之列表List_第14张图片

blpop

从列表中左侧查询元素,返回列表的key和左侧第一个元素,若所有查询的列表中都没有元素,则会阻塞等待至设置的timeout秒之后返回空,若在这期间,这些列表新增了元素,则会立刻消费并返回该元素:

BLPOP key [key ...] timeout

Redis系列(四)、数据类型之列表List_第15张图片

brpop

与blpop类似,区别是brpop从右侧消费:

BRPOP key [key ...] timeout

brpoplpush

结合brpop和lpush,阻塞消费并将消费到的元素添加至target列表的最左侧:

BRPOPLPUSH source destination timeout

Redis系列(四)、数据类型之列表List_第16张图片

应用

栈:先进后出

lpush + lpop

队列:先进先出

lpush + rpop

有限集合

lpush + ltrim

消息队列

lpush + brpop

 

Python客户端与命令行函数基本上完全一致,篇幅太长因此不再过多的展示。

希望本文对你有帮助,请点个赞鼓励一下作者吧~ 谢谢!

你可能感兴趣的:(Python全栈开发,#,Redis)