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使用any判断一个对象是否为空的方法
Nov 19 Python
Python运算符重载用法实例分析
Jun 01 Python
详解python中executemany和序列的使用方法
Aug 12 Python
numpy.transpose对三维数组的转置方法
Apr 17 Python
PyCharm鼠标右键不显示Run unittest的解决方法
Nov 30 Python
python实现视频分帧效果
May 31 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
Aug 13 Python
Python面向对象之私有属性和私有方法应用案例分析
Dec 31 Python
Python代码执行时间测量模块timeit用法解析
Jul 01 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
Dec 10 Python
pytorch--之halfTensor的使用详解
May 24 Python
python+pytest接口自动化之token关联登录的实现
Apr 06 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
Zend Framework教程之Zend_Layout布局助手详解
2016/03/04 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
2019/10/01 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
2021/03/09 PHP
一个无限级XML绑定跨框架菜单(For IE)
2007/01/27 Javascript
THREE.JS入门教程(3)着色器-下
2013/01/24 Javascript
jQuery中:checkbox选择器用法实例
2015/01/03 Javascript
JavaScript中神奇的call()方法
2015/03/12 Javascript
IE6-IE9使用JSON、table.innerHTML所引发的问题
2015/12/22 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
2016/06/06 Javascript
JS基于面向对象实现的选项卡效果示例
2016/12/20 Javascript
微信小程序 swiper 组件遇到的问题及解决方法
2019/05/26 Javascript
Python基于动态规划算法解决01背包问题实例
2017/12/06 Python
python爬虫_实现校园网自动重连脚本的教程
2018/04/22 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
python中使用 xlwt 操作excel的常见方法与问题
2019/01/13 Python
Python选择网卡发包及接收数据包
2019/04/04 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
2019/06/21 Python
python实现读取excel文件中所有sheet操作示例
2019/08/09 Python
通过实例解析python subprocess模块原理及用法
2020/10/10 Python
新西兰演唱会和体育门票网站:Ticketmaster新西兰
2017/10/07 全球购物
有针对性的求职自荐信
2013/11/14 职场文书
幼儿园保育员岗位职责
2014/04/13 职场文书
面试必备的求职信
2014/05/25 职场文书
党员干部四风问题整改措施思想汇报
2014/10/12 职场文书
2015试用期转正工作总结
2014/12/12 职场文书
股份转让协议书范本
2015/01/27 职场文书
幼儿园大班教师个人总结
2015/02/05 职场文书
学校计划生育责任书
2015/05/09 职场文书
世界文化遗产导游词
2019/08/07 职场文书
python生成随机数、随机字符、随机字符串
2021/04/06 Python
redis 限制内存使用大小的实现
2021/05/08 Redis
python 制作一个gui界面的翻译工具
2021/05/14 Python
Vue图片裁剪组件实例代码
2021/07/02 Vue.js
springboot应用服务启动事件的监听实现
2022/04/06 Java/Android
win10电脑右下角输入法图标不见了?Win10右下角不显示输入法的解决方法
2022/07/23 数码科技