python3操作redis实现List列表实例


Posted in Python onAugust 04, 2021

 

首先先看一下python3 操作redis都有哪些命令

  • lrange(key , start , stop)
  • lpush(key , value)
  • rpush(key , value)
  • lpop(key)
  • rpop(key)
  • blpop(key)
  • brpop(key)
  • brpoplpush(source,destination,timeout)
  • lindex(key,index)
  • linsert(key,before|after,privot,value)
  • llen(key)
  • lpushx(key)
  • lrem(key , value , count)
  • lset(key , index , value)
  • ltrim(key , start , stop)
  • rpoplpush(source , destination)
  • rpushx(key , value)

下面是具体例子详解和代码:

①lrange(key , start , stop)

返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。
下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。

import redis
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.lpush("0",1,2,3,4) 
print(r.lrange("0" , 0 , -1))

②lpush(key , value)

将一个或多个值 value 插入到列表 key 的表头
如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头
如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作
当 key 存在但不是列表类型时,返回一个错误

import redis
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.lpush("1",1) 
print(r.lrange("1" , 0 , -1)) #打印列表"1"的全部内容
r.lpush("1",1,2,3,4)
print(r.lrange("1" , 0 , -1))

③rpush(key , value)

将一个或多个值 value 插入到列表 key 的表尾(最右边)。
如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表尾
如果 key 不存在,一个空列表会被创建并执行 RPUSH 操作。
当 key 存在但不是列表类型时,返回一个错误。

import redis
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.rpush("2",1) 
print(r.lrange("2" , 0 , -1)) #打印列表"2"的全部内容
r.rpush("2",1,2,3,4)
print(r.lrange("2" , 0 , -1))

④lpop(key)

移除并返回列表 key 的头元素。

import redis
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.lpush("3",1,2,3,4)
print(r.lrange("3" , 0 , -1)) #打印列表"3"的全部内容
r.lpop("3")
print(r.lrange("3" , 0 , -1))

⑤rpop(key)

移除并返回列表 key 的尾元素。

import redis
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.lpush("4",1,2,3,4)
print(r.lrange("4" , 0 , -1)) #打印列表"4"的全部内容
r.rpop("4")
print(r.lrange("4" , 0 , -1))

⑥blpop(key)

Blpop 命令移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
如果列表为空,返回一个 None 。 否则,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。

import redis 
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.rpush("6",1,2,3,4,4,5,6)
print(r.blpop("6"))
print(r.blpop("6"))
print(r.blpop("6"))
print(r.blpop("100" , timeout=2))#因为键 100 不存在,所以2秒后输出的结果是None
print(r.lrange("6" , 0 , -1)) #打印列表"6"的全部内容

⑦brpop(key)

Brpop 命令移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
假如在指定时间内没有任何元素被弹出,则返回一个None 和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。

import redis 
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.rpush("7",1,2,3,4,5,6,)     
print(r.lrange("7" , 0 , -1)) #打印列表"7"的全部内容 
print(r.brpop("7"))     
print(r.brpop("7"))     
print(r.brpop("7"))      
print(r.brpop("101",timeout=2))      #因为键 101 不存在,所以2秒后输出的结果是None
print(r.lrange("7" , 0 , -1)) #打印列表"7"的全部内容

⑧brpoplpush(source,destination,timeout)

命令从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
假如在指定时间内没有任何元素被弹出,则返回一个 None 和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素的值,第二个元素是等待时长。

import redis 
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.rpush("8",1,2,3)
r.rpush("88",4,5,6)
print(r.lrange("8" , 0 , -1)) #打印列表"8"的全部内容 
print(r.lrange("88" , 0 , -1)) #打印列表"88"的全部内容 
print(r.brpoplpush(src="8",dst="88",timeout=2))  #输出的结果是3
print(r.brpoplpush(src="44",dst="22",timeout=2))  #键44 不存在,输出的结果是None
print(r.lrange("8" , 0 , -1)) #打印列表"8"的全部内容 
print(r.lrange("88" , 0 , -1)) #打印列表"88"的全部内容

⑨lindex(key,index)

通过索引获取列表中的元素。你也可以使用负数下标,以 -1 表示列表的最后一个元素

import redis 
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.rpush("9",1,2,3)
print(r.lrange("9" , 0 , -1)) #打印列表"8"的全部内容 
print(r.lindex("9",0))        #输出的结果是1
print(r.lindex("9",1))        #输出的结果是2
print(r.lindex("9",2))        #输出的结果是3
print(r.lindex("9",3))        #输出的结果是None
print(r.lindex("9",-1))        #输出的结果是3
print(r.lrange("9" , 0 , -1)) #打印列表"8"的全部内容

⑩linsert(key,before|after,privot,value)

用于在列表的元素前或者后插入元素。
当指定元素不存在于列表中时,不执行任何操作。 当列表不存在时,被视为空列表,不执行任何操作。

import redis 
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.rpush("10",1,2,3)
print(r.lrange("10" , 0 , -1)) #打印列表"10"的全部内容 
r.linsert("10" , "BEFORE" , "2" , 10)
print(r.lrange("10" , 0 , -1)) #结果 ['1', '10', '2', '3']

r.rpush("100",1,2,3)
r.linsert("100" , "AFTER" , "2" , 10)
print(r.lrange("100" , 0 , -1)) #结果 ['1', '2', '10', '3']

①①llen(key)

返回列表的长度。 如果列表 key 不存在,则 key 被解释为一个空列表,返回 0 。 如果 key 不是列表类型,返回一个错误。

import redis 
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.rpush("11",1,2,3)
print(r.lrange("11" , 0 , -1)) #打印列表"11"的全部内容 
print(r.llen("11"))  #结果是 3

①②lpushx(key)

将一个或多个值插入到已存在的列表头部,列表不存在时操作无效。
和lpush的区别是lpushx在列表不存在时操作无效,而lpush会创建一个列表

import redis 
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.rpush("12" , 1,2,3)
r.rpush("122" , 1,2,3)
print(r.lrange("12" , 0 , -1)) #结果为 ['1', '2', '3']
print(r.lrange("122" , 0 , -1)) #结果为 ['1', '2', '3']
r.lpush("123" , 1)
r.lpushx("1223" , 1)
print(r.lrange("123" , 0 , -1)) #结果为 ['1']
print(r.lrange("1223" , 0 , -1)) #结果为 []

①③lrem(key , value , count)

根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素。
COUNT 的值可以是以下几种:
count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
count = 0 : 移除表中所有与 VALUE 相等的值。
返回被移除元素的数量。 列表不存在时返回 0 。

import redis 
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.rpush("13" , 'a','b','b','c','d','b')
print(r.lrange("13" , 0 , -1)) #结果为['a', 'b', 'b', 'c', 'd', 'b']
r.lrem("13" , "b" , 2)
print(r.lrange("13" , 0 , -1)) #结果为['a', 'c', 'd', 'b']

r.rpush("133" , 'a','b','b','c','d','b')
print(r.lrange("133" , 0 , -1)) #结果为['a', 'b', 'b', 'c', 'd', 'b'] 
r.lrem("133" , "b" , -2)
print(r.lrange("133" , 0 , -1)) #结果为['a', 'b', 'c', 'd']

①④lset(key , index , value)

将列表 key 下标为 index 的元素的值设置为 value 。
当 index 参数超出范围,或对一个空列表( key 不存在)进行 LSET 时,返回一个错误。

import redis
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.rpush("14" , 1,2,3,4)
print(r.lrange("14" , 0 , -1)) #打印列表"14"的全部内容
r.lset("14",1,9)
print(r.lrange("14" , 0 , -1)) #结果为 ['1', '9', '3', '4']

①⑤ltrim(key , start , stop)

对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
举个例子,执行命令 LTRIM list 0 2 ,表示只保留列表 list 的前三个元素,其余元素全部删除。
下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。
你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
当 key 不是列表类型时,返回一个错误。


 

①⑥rpoplpush(source , destination)

将列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端。
将 source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素。

import redis 
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
r.rpush("16",1,2,3)
r.rpush("166",4,5,6)
print(r.lrange("16" , 0 , -1)) # ['1', '2', '3'] 
print(r.lrange("166" , 0 , -1)) # ['4', '5', '6'] 
print(r.rpoplpush(src="16",dst="166"))  #输出的结果是3
print(r.lrange("16" , 0 , -1)) # ['1', '2'] 
print(r.lrange("166" , 0 , -1)) # ['3', '4', '5', '6']

①⑦rpushx(key , value)

将值 value 插入到列表 key 的表尾,当且仅当 key 存在并且是一个列表。
和 RPUSH 命令相反,当 key 不存在时, RPUSHX 命令什么也不做。

import redis 
r = redis.Redis(host='localhost' , port='6379' , db=6 ,decode_responses=True)
# for i in range(10):
#     r.lpop("17")
#     r.lpop("177")
#     r.lpop("1777")
r.rpush("17" , 1,2,3)
r.rpush("177" , 1,2,3)
print(r.lrange("17" , 0 , -1)) #结果为 ['1', '2', '3']
print(r.lrange("177" , 0 , -1)) #结果为 ['1', '2', '3']
r.rpush("177" , 4)
r.rpushx("1777" , 4)
print(r.lrange("177" , 0 , -1)) #结果为 ['1', '2', '3', '4']
print(r.lrange("1777" , 0 , -1)) #结果为 []

完整代码的地址
https://github.com/dangsh/pythonPra/blob/master/redisGit/redisTest.py

到此这篇关于python3操作redis实现List列表实例的文章就介绍到这了,更多相关python3操作redis List内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python模块restful使用方法实例
Dec 10 Python
python批量提交沙箱问题实例
Oct 08 Python
python操作gmail实例
Jan 14 Python
pyqt5自定义信号实例解析
Jan 31 Python
python编程使用协程并发的优缺点
Sep 20 Python
python使用Paramiko模块实现远程文件拷贝
Apr 30 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
Oct 11 Python
浅析python redis的连接及相关操作
Nov 07 Python
python实现指定ip端口扫描方式
Dec 17 Python
Python ArgumentParse的subparser用法说明
Apr 20 Python
Python爬虫数据的分类及json数据使用小结
Mar 29 Python
python opencv检测直线 cv2.HoughLinesP的实现
Jun 18 Python
Python pandas求方差和标准差的方法实例
Aug 04 #Python
pandas求平均数和中位数的方法实例
Aug 04 #Python
Python NumPy灰度图像的压缩原理讲解
Aug 04 #Python
Python内置数据结构列表与元组示例详解
Python制作动态字符画的源码
Aug 04 #Python
Python进行区间取值案例讲解
Aug 02 #Python
Python获取江苏疫情实时数据及爬虫分析
You might like
使用PHPMyAdmin修复论坛数据库的图文方法
2012/01/09 PHP
Php output buffering缓存及程序缓存深入解析
2013/07/15 PHP
smarty模板数学运算示例
2016/12/11 PHP
PHP随机获取未被微信屏蔽的域名(微信域名检测)
2017/03/19 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
laravel 查询数据库获取结果实现判断是否为空
2019/10/24 PHP
javascript 随机展示头像实现代码
2011/12/06 Javascript
javascript中scrollTop详解
2015/04/13 Javascript
纯JS实现弹性导航条效果
2017/03/06 Javascript
vue如何实现observer和watcher源码解析
2017/03/09 Javascript
详解ES6之用let声明变量以及let loop机制
2017/07/15 Javascript
vue-cli3+ts+webpack实现多入口多出口功能
2019/05/30 Javascript
js表达式与运算符简单操作示例
2020/02/15 Javascript
详解Vue的组件中data选项为什么必须是函数
2020/08/17 Javascript
vue实现标签云效果的示例
2020/11/09 Javascript
Python中的lstrip()方法使用简介
2015/05/19 Python
浅谈DataFrame和SparkSql取值误区
2018/06/09 Python
python使用pandas处理excel文件转为csv文件的方法示例
2019/07/18 Python
pandas 空数据处理方法详解
2019/11/02 Python
python如何把字符串类型list转换成list
2020/02/18 Python
Python configparser模块封装及构造配置文件
2020/08/07 Python
python调用win32接口进行截图的示例
2020/11/11 Python
突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述
2013/01/31 HTML / CSS
Html5 FileReader实现即时上传图片功能实例代码
2014/09/01 HTML / CSS
博朗(Braun)俄罗斯官方商店:德国小家电品牌
2019/09/24 全球购物
会计师事务所审计实习自我鉴定
2013/09/20 职场文书
视光学专业自荐信
2014/06/24 职场文书
语文课外活动总结
2014/08/27 职场文书
医院领导班子整改方案
2014/10/01 职场文书
2015年大学生社会实践评语
2015/03/26 职场文书
2015年教导处教学工作总结
2015/07/22 职场文书
机关单位2016年创先争优活动总结
2016/04/05 职场文书
六年级作文之预言作文
2019/10/25 职场文书
javascript函数式编程基础
2021/09/15 Javascript
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python
mysql 子查询的使用
2022/04/28 MySQL