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+Wordpress制作小说站
Apr 14 Python
Python面向对象编程基础解析(一)
Oct 26 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
Jan 16 Python
python opencv 直方图反向投影的方法
Feb 24 Python
Python中的groupby分组功能的实例代码
Jul 11 Python
Python3单行定义多个变量或赋值方法
Jul 12 Python
详解python中sort排序使用
Mar 23 Python
使用Python实现企业微信的自动打卡功能
Apr 30 Python
Python 常用模块 re 使用方法详解
Jun 06 Python
安装2019Pycharm最新版本的教程详解
Oct 22 Python
简述python&amp;pytorch 随机种子的实现
Oct 07 Python
python 决策树算法的实现
Oct 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中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
php实现文本数据导入SQL SERVER
2015/05/17 PHP
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
兼容Mozilla必须知道的知识。
2007/01/09 Javascript
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
使用JQUERY Tabs插件宿主IFRAMES
2010/01/01 Javascript
JavaScript学习笔记(一) js基本语法
2011/10/25 Javascript
JS中处理与当前时间间隔的函数代码
2012/05/23 Javascript
JS判断当前日期是否大于某个日期的实现代码
2012/09/02 Javascript
js中单引号与双引号冲突问题解决方法
2013/10/04 Javascript
jQuery获取选中内容及设置元素属性的方法
2014/07/09 Javascript
jQuery Select下拉框操作小结(推荐)
2016/07/22 Javascript
easyui 中的datagrid跨页勾选问题的实现方法
2017/01/18 Javascript
面试常见的js算法题
2017/03/23 Javascript
JavaScript比较两个数组的内容是否相同(推荐)
2017/05/02 Javascript
运用jQuery写的验证表单(实例讲解)
2017/07/06 jQuery
angular指令笔记ng-options的使用方法
2017/09/18 Javascript
jQuery Validate插件ajax方式验证输入值的实例
2017/12/21 jQuery
ES6下子组件调用父组件的方法(推荐)
2018/02/23 Javascript
webpack4 从零学习常用配置(小结)
2019/05/28 Javascript
JS查找孩子节点简单示例
2019/07/25 Javascript
python使用百度翻译进行中翻英示例
2014/04/14 Python
Python中的引用和拷贝浅析
2014/11/22 Python
在Python程序中进行文件读取和写入操作的教程
2015/04/28 Python
Python编程中运用闭包时所需要注意的一些地方
2015/05/02 Python
浅析Django中关于session的使用
2019/12/30 Python
Python pyautogui模块实现鼠标键盘自动化方法详解
2020/02/17 Python
在Python 的线程中运行协程的方法
2020/02/24 Python
tensorflow中tf.reduce_mean函数的使用
2020/04/19 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
实习生个人的自我评价
2013/12/08 职场文书
超市活动计划书
2014/04/24 职场文书
实践单位评语
2014/04/26 职场文书
教师教育心得体会
2016/01/19 职场文书
2016社区平安家庭事迹材料
2016/02/26 职场文书
利用Python第三方库实现预测NBA比赛结果
2021/06/21 Python