python使用pipeline批量读写redis的方法


Posted in Python onFebruary 18, 2019

用了很久的redis了。随着业务的要求越来越高。对redis的读写速度要求也越来越高。正好最近有个需求(需要在秒级取值1000+的数据),如果对于传统的单词取值,循环取值,消耗实在是大,有小伙伴可能考虑到多线程,但这并不是最好的解决方案,这里考虑到了redis特有的功能pipeline管道功能。

下面就更大家演示一下pipeline在python环境下的使用情况。

1、插入数据

>>> import redis

>>> conn = redis.Redis(host='192.168.8.176',port=6379)

>>> pipe = conn.pipeline()

>>> pipe.hset("hash_key","leizhu900516",8)
Pipeline<ConnectionPool<Connection<host=192.168.8.176,port=6379,db=0>>>

>>> pipe.hset("hash_key","chenhuachao",9)
Pipeline<ConnectionPool<Connection<host=192.168.8.176,port=6379,db=0>>>

>>> pipe.hset("hash_key","wanger",10)
Pipeline<ConnectionPool<Connection<host=192.168.8.176,port=6379,db=0>>>

>>> pipe.execute()
[1L, 1L, 1L]
>>>

2、批量读取数据

>>> pipe.hget("hash_key","leizhu900516")
Pipeline<ConnectionPool<Connection<host=192.168.8.176,port=6379,db=0>>>

>>> pipe.hget("hash_key","chenhuachao")
Pipeline<ConnectionPool<Connection<host=192.168.8.176,port=6379,db=0>>>

>>> pipe.hget("hash_key","wanger")
Pipeline<ConnectionPool<Connection<host=192.168.8.176,port=6379,db=0>>>

>>> result = pipe.execute()

>>> print result
['8', '9', '10']  #有序的列表
>>>

总结:redis的pipeline就是这么简单,实际生产环境,根据需要去编写相应的代码。思路同理,如:

redis_db = redis.Redis(host='127.0.0.1',port=6379)
data = ['zhangsan', 'lisi', 'wangwu']

with redis_db.pipeline(transaction=False) as pipe:
  for i in data:
    pipe.zscore(self.key, i)

  result = pipe.execute()

print result
# [100, 80, 78]

线上的redis一般都是集群模式,集群模式下使用pipeline的时候,在创建pipeline的对象时,需要指定

pipe =conn.pipeline(transaction=False)

经过线上实测,利用pipeline取值3500条数据,大约需要900ms,如果配合线程or协程来使用,每秒返回1W数据是没有问题的,基本能满足大部分业务。

以上这篇python使用pipeline批量读写redis的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python和shell实现的校验IP地址合法性脚本分享
Oct 23 Python
Python实现FTP上传文件或文件夹实例(递归)
Jan 16 Python
matplotlib给子图添加图例的方法
Aug 03 Python
Python判断一个文件夹内哪些文件是图片的实例
Dec 07 Python
使用Python自动化破解自定义字体混淆信息的方法实例
Feb 13 Python
详解python中递归函数
Apr 16 Python
python matplotlib库直方图绘制详解
Aug 10 Python
Python reversed函数及使用方法解析
Mar 17 Python
python openCV自制绘画板
Oct 27 Python
pytorch实现线性回归以及多元回归
Apr 11 Python
Python必备技巧之函数的使用详解
Apr 04 Python
python图像处理 PIL Image操作实例
Apr 09 Python
Python变量类型知识点总结
Feb 18 #Python
Python中文编码知识点
Feb 18 #Python
对Python的多进程锁的使用方法详解
Feb 18 #Python
对python中if语句的真假判断实例详解
Feb 18 #Python
python判断文件是否存在,不存在就创建一个的实例
Feb 18 #Python
解决python打不开文件(文件不存在)的问题
Feb 18 #Python
python多线程调用exit无法退出的解决方法
Feb 18 #Python
You might like
PHP 文件上传全攻略
2010/04/28 PHP
PHP PDOStatement::fetchAll讲解
2019/01/31 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
js不能跳转到上一页面的问题解决方法
2013/03/01 Javascript
20分钟轻松创建自己的Bootstrap站点
2016/05/12 Javascript
阻止表单提交按钮多次提交的完美解决方法
2016/05/16 Javascript
JS取模、取商及取整运算方法示例
2016/10/13 Javascript
JavaScript模板引擎Template.js使用详解
2016/12/15 Javascript
jquery插件canvaspercent.js实现百分比圆饼效果
2017/07/18 jQuery
javascript按顺序加载运行js方法
2017/12/01 Javascript
vue2.0 computed 计算list循环后累加值的实例
2018/03/07 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
2019/03/29 Javascript
js判断鼠标移入移出方向的方法
2020/06/24 Javascript
jQuery实现B2B网站后台管理系统侧导航
2020/07/08 jQuery
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
2020/07/09 Javascript
jQuery实现回到顶部效果
2020/10/19 jQuery
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
python 正则表达式 概述及常用字符
2009/05/04 Python
使用python实现省市三级菜单效果
2016/01/20 Python
一道python走迷宫算法题
2018/01/22 Python
深入分析python中整型不会溢出问题
2018/06/18 Python
python查看模块,对象的函数方法
2018/10/16 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
2021/01/11 Python
日本高岛屋百货购物网站:TAKASHIMAYA
2019/03/24 全球购物
SQL Server里面什么样的视图才能创建索引
2015/04/17 面试题
外贸员简历中的自我评价
2014/03/04 职场文书
元旦文艺汇演主持词
2014/03/26 职场文书
考生诚信考试承诺书
2014/05/23 职场文书
学校党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
劳动者解除劳动合同通知书
2015/04/16 职场文书
中学推普周活动总结
2015/05/07 职场文书
2015年乡镇残联工作总结
2015/05/13 职场文书
导游词之茶卡盐湖
2019/11/26 职场文书
七个非常实用的Python工具包总结
2021/06/15 Python
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android