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 包含汉字的文件读写之每行末尾加上特定字符
Dec 12 Python
python 根据pid杀死相应进程的方法
Jan 16 Python
Python实现两款计算器功能示例
Dec 19 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
May 27 Python
Python闭包和装饰器用法实例详解
May 22 Python
Python寻找路径和查找文件路径的示例
Jul 10 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
Oct 28 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
Apr 29 Python
python脚本和网页有何区别
Jul 02 Python
pytorch加载自己的图像数据集实例
Jul 07 Python
python 使用openpyxl读取excel数据
Feb 18 Python
python异步的ASGI与Fast Api实现
Jul 16 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核心代码分析require和include的区别
2011/01/02 PHP
超级实用的7个PHP代码片段分享
2012/01/05 PHP
通过缓存数据库结果提高PHP性能的原理介绍
2012/09/05 PHP
php中文字符串截取方法实例总结
2014/09/30 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
2016/05/26 PHP
yii使用bootstrap分页样式的实例
2017/01/17 PHP
计算世界完全对称日的js代码,粗糙版
2011/11/04 Javascript
JavaScript打字小游戏代码
2011/12/26 Javascript
jquery如何扑捉回车键触发的事件
2014/04/24 Javascript
nodejs通过phantomjs实现下载网页
2015/05/04 NodeJs
JavaScript计算某一天是星期几的方法
2015/08/05 Javascript
jQuery实现模仿微博下拉滚动条加载数据效果
2015/12/25 Javascript
JS跨域解决方案之使用CORS实现跨域
2016/04/14 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
JS实现touch 点击滑动轮播实例代码
2017/01/19 Javascript
深究AngularJS之ui-router详解
2017/06/13 Javascript
微信小程序自定义toast实现方法详解【附demo源码下载】
2017/11/28 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
2018/08/25 Javascript
原生js实现公告滚动效果
2021/01/10 Javascript
如何管理Vue中的缓存页面
2021/02/06 Vue.js
python 遍历字符串(含汉字)实例详解
2017/04/04 Python
Python及PyCharm下载与安装教程
2017/11/18 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
2019/10/24 Python
Matplotlib绘制雷达图和三维图的示例代码
2020/01/07 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
2020/03/16 Python
Python截图并保存的具体实例
2021/01/14 Python
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
Anthropologie英国:美国家喻户晓的休闲服装和家居产品品牌
2018/12/05 全球购物
利用promise及参数解构封装ajax请求的方法
2021/03/24 Javascript
2014流动人口计划生育工作总结
2014/12/20 职场文书
先进工作者事迹材料
2014/12/23 职场文书
遗失说明具结保证书
2015/02/26 职场文书
网络销售员岗位职责
2015/04/11 职场文书
干货:如何写好观后感 !
2019/05/21 职场文书
Java设计模式之享元模式示例详解
2022/03/03 Java/Android
使用Java去实现超市会员管理系统
2022/03/18 Java/Android