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多线程编程(二):启动线程的两种方法
Apr 05 Python
pyQt4实现俄罗斯方块游戏
Jun 26 Python
python3 面向对象__类的内置属性与方法的实例代码
Nov 09 Python
Django如何防止定时任务并发浅析
May 14 Python
Pyqt QImage 与 np array 转换方法
Jun 27 Python
Python多线程爬取豆瓣影评API接口
Oct 22 Python
用Python画小女孩放风筝的示例
Nov 23 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
Jan 10 Python
Python终端输出彩色字符方法详解
Feb 11 Python
python可迭代对象去重实例
May 15 Python
简述python Scrapy框架
Aug 17 Python
TensorFlow低版本代码自动升级为1.0版本
Feb 20 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
php代码把全角数字转为半角数字
2007/12/10 PHP
第七章 php自定义函数实现代码
2011/12/30 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
2016/10/14 PHP
jquery利用event.which方法获取键盘输入值的代码
2011/10/09 Javascript
node.js中的fs.chownSync方法使用说明
2014/12/16 Javascript
js简单设置与使用cookie的方法
2016/01/22 Javascript
jQuery layui常用方法介绍
2016/07/25 Javascript
半个小时学json(json传递示例)
2016/12/25 Javascript
微信小程序 form组件详解及简单实例
2017/01/10 Javascript
js阻止移动端页面滚动的两种方法
2017/01/25 Javascript
JS ES6中setTimeout函数的执行上下文示例
2017/04/27 Javascript
JavaScript求一组数的最小公倍数和最大公约数常用算法详解【面向对象,回归迭代和循环】
2018/05/07 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
2018/12/11 Javascript
JS隐藏号码中间4位代码实例
2019/04/09 Javascript
layui复选框限制选择个数的方法
2019/09/18 Javascript
vue 解决异步数据更新问题
2019/10/29 Javascript
JavaScript函数柯里化实现原理及过程
2020/12/02 Javascript
jquery实现拖拽小方块效果
2020/12/10 jQuery
详解React中共享组件逻辑的三种方式
2021/02/02 Javascript
Python continue语句用法实例
2014/03/11 Python
python实现下载指定网址所有图片的方法
2015/08/08 Python
Django 连接sql server数据库的方法
2018/06/30 Python
python 利用pyttsx3文字转语音过程详解
2019/09/25 Python
Python数据分析pandas模块用法实例详解
2019/11/20 Python
美国领先的在线邮轮旅游公司:CruiseDirect
2018/06/07 全球购物
巴西香水和化妆品购物网站:The Beauty Box
2019/09/03 全球购物
《小猫刮胡子》教学反思
2014/02/21 职场文书
委托书范文
2014/04/02 职场文书
2014年社区卫生工作总结
2014/12/18 职场文书
2015政治思想表现评语
2015/03/25 职场文书
联谊会开场白
2015/06/01 职场文书
2016学习依法治国心得体会
2016/01/15 职场文书
Python利用机器学习算法实现垃圾邮件的识别
2021/06/28 Python
python数字图像处理数据类型及颜色空间转换
2022/06/28 Python