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 21 Python
Python3中的列表生成式、生成器与迭代器实例详解
Jun 11 Python
python 实现批量xls文件转csv文件的方法
Oct 23 Python
python读取txt文件,去掉空格计算每行长度的方法
Dec 20 Python
Django Sitemap 站点地图的实现方法
Apr 29 Python
python如何读取bin文件并下发串口
Jul 05 Python
python Kmeans算法原理深入解析
Aug 23 Python
python实现人机五子棋
Mar 25 Python
详解anaconda离线安装pytorchGPU版
Sep 08 Python
利用Python网络爬虫爬取各大音乐评论的代码
Apr 13 Python
pytorch交叉熵损失函数的weight参数的使用
May 24 Python
Django框架中视图的用法
Jun 10 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
我的论坛源代码(八)
2006/10/09 PHP
php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
2011/05/24 PHP
php中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
神盾加密解密教程(二)PHP 神盾解密
2014/06/08 PHP
php数组键名技巧小结
2015/02/17 PHP
详解php用curl调用接口方法,get和post两种方式
2017/01/13 PHP
php表单习惯用的正则表达式
2017/10/11 PHP
jQuery侧边栏随窗口滚动实现方法
2013/03/04 Javascript
javascript date格式化示例
2013/09/25 Javascript
js Date概念详细介绍
2013/11/22 Javascript
JavaScript function函数种类详解
2016/02/22 Javascript
JS判断字符串字节数并截取长度的方法
2016/03/05 Javascript
JS实现简单的二元方程计算器功能示例
2017/01/03 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
2017/09/12 jQuery
基于vue-ssr的静态网站生成器VuePress 初体验
2018/04/17 Javascript
javascript少儿编程关于返回值的函数内容
2018/05/27 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
2018/10/31 Javascript
javascript+HTML5 canvas绘制时钟功能示例
2019/05/15 Javascript
超轻量级的js时间库miment使用解析
2019/08/02 Javascript
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
python3图片转换二进制存入mysql
2013/12/06 Python
Python实现控制台输入密码的方法
2015/05/29 Python
使用pandas读取文件的实现
2019/07/31 Python
使用matlab或python将txt文件转为excel表格
2019/11/01 Python
Django的CVB实例详解
2020/02/10 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
2020/03/24 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
专升本自我鉴定
2013/10/10 职场文书
中医专业职业生涯规划书范文
2014/01/04 职场文书
员工工作表现评语
2014/04/26 职场文书
学习型党组织建设经验材料
2014/05/26 职场文书
九寨沟导游词
2015/02/02 职场文书
小学班主任工作随笔
2015/08/15 职场文书
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
2021/04/03 Python
Javascript设计模式之原型模式详细
2021/10/05 Javascript