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 字典dict使用介绍
Nov 30 Python
Python随机生成数模块random使用实例
Apr 13 Python
Python中的特殊语法:filter、map、reduce、lambda介绍
Apr 14 Python
用Python设计一个经典小游戏
May 15 Python
python实现xlsx文件分析详解
Jan 02 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
May 29 Python
浅谈Python中eval的强大与危害
Mar 13 Python
关于Python中的向量相加和numpy中的向量相加效率对比
Aug 26 Python
python序列化与数据持久化实例详解
Dec 20 Python
python设置环境变量的作用整理
Feb 17 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
Apr 30 Python
python 下载文件的多种方法汇总
Nov 17 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中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
Joomla框架实现字符串截取的方法示例
2017/07/18 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
javascript AutoScroller 函数类
2009/05/29 Javascript
Jquery Ajax.ashx 高效分页实现代码
2009/10/20 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
JS(JQuery)操作Array的相关方法介绍
2014/02/11 Javascript
js动态创建标签示例代码
2014/06/09 Javascript
javascript模拟实现ajax加载框实例
2014/10/15 Javascript
javascript 判断整数方法分享
2014/12/16 Javascript
JavaScript兼容性总结之获取非行间样式案例
2016/08/07 Javascript
BooStrap对导航条的改造实践小结
2016/09/21 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
2017/09/16 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
2018/03/14 Javascript
vue弹窗组件使用方法
2018/04/28 Javascript
小程序开发基础之view视图容器
2018/08/21 Javascript
vue模块拖拽实现示例代码
2019/03/09 Javascript
Python输出带颜色的字符串实例
2017/10/10 Python
python 寻找优化使成本函数最小的最优解的方法
2017/12/28 Python
Python数据分析之获取双色球历史信息的方法示例
2018/02/03 Python
Python3中的列表生成式、生成器与迭代器实例详解
2018/06/11 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
2018/12/19 Python
python游戏开发的五个案例分享
2020/03/09 Python
python爬取招聘要求等信息实例
2020/11/20 Python
使用css3做0.5px的细线的示例代码
2018/01/18 HTML / CSS
英国信箱在线鲜花速递公司:Bloom & Wild
2019/03/10 全球购物
Python里面如何拷贝一个对象
2014/02/17 面试题
中学生在校期间的自我评价分享
2013/11/13 职场文书
汽修专业学生自我鉴定
2013/11/16 职场文书
表彰会主持词
2014/03/26 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
施工员岗位职责范本
2015/04/11 职场文书
2015年公务员工作总结
2015/04/24 职场文书
如何让vue长列表快速加载
2021/03/29 Vue.js
详解Redis基本命令与使用场景
2021/06/01 Redis