element排序类型_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从其中消费,传送门。

afb9b9a59d14d2672ab300c877346191.png

命令行模式

进入命令行模式:

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

 4dec86f04a9469154c424f00d9790fb5.png

help

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

help @list

12c091a5ce05a11b6c6f9bdaa8b07910.png

lpush

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

LPUSH key element [element ...]

lpush mylist 'wyk'

lpush mylist '28' 'csdn' 'wyk@csdn.com'

0c571c19ead36b65b65fcfb4bca9a7cc.png

rpush

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

RPUSH key element [element ...]

rpush mylist2 'wyk'

rpush mylist2 '28' 'csdn' 'wyk@csdn.com'

 c3f0068ca48e0fc0d4c9812f365cd1f5.png

lpushx

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

LPUSHX key element [element ...]

 1412a8a87134a995cf7d9273d2215bd8.png

rpushx

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

RPUSHX key element [element ...]

linsert

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

LINSERT key BEFORE|AFTER pivot element

 a6eee21ef6124755657d694624892d5b.png

lrem

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

LREM key count element

lrem mylist2 1 wyk

lrem mylist2 2 new_val

lrem mylist2 3 new_val2

 e90d5cc9b1fd1fd9804b6dc76229406f.png

lset

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

LSET key index element

d8588a596d087be42c6b31eab4d17706.png

ltrim

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

LTRIM key start stop

 596560d2d4a79dce793e757bcdada2a3.png

llen

查看列表中元素的个数:

LLEN key

797d21c0515d6ad1d6c57ea06bc701e7.png

lrange 

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

LRANGE key start stop

lrange key 0 -1 #表示查看全部元素

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

 4124515d04d3f19d892a2a3547fb60f1.png

lindex

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

LINDEX key index

 d6d5645016d33763ae9cf96e619602a6.png

lpop

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

LPOP key

b3fb34e3749c6c6e928fe498abf28092.png

rpop

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

RPOP key

67423a385f7572d4dcf0014035daf2c8.png

rpoplpush

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

RPOPLPUSH source destination

RPOPLPUSH List_A List_B

69f19836fb243e9bdf8504eb886d7f28.png

blpop

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

BLPOP key [key ...] timeout

df79da14c4f1adf25ba5e0291782fed2.png

brpop

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

BRPOP key [key ...] timeout

brpoplpush

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

BRPOPLPUSH source destination timeout

4cf76ba1a93101905eb7a395febfb4a2.png

应用

栈:先进后出

lpush + lpop

队列:先进先出

lpush + rpop

有限集合

lpush + ltrim

消息队列

lpush + brpop

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

希望本文对你有帮助,请点击 "","在看" 鼓励一下作者吧~ 谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值