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基础教程之实现石头剪刀布游戏示例
Feb 11 Python
Python中用Descriptor实现类级属性(Property)详解
Sep 18 Python
在Python中操作字符串之rstrip()方法的使用
May 19 Python
Python和JavaScript间代码转换的4个工具
Feb 22 Python
Python使用PIL库实现验证码图片的方法
Mar 11 Python
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
Apr 23 Python
python3调用R的示例代码
Feb 23 Python
python读写csv文件方法详细总结
Jul 05 Python
Python全栈之列表数据类型详解
Oct 01 Python
keras模型可视化,层可视化及kernel可视化实例
Jan 24 Python
Python IDE环境之 新版Pycharm安装详细教程
Mar 05 Python
Pandas中两个dataframe的交集和差集的示例代码
Dec 13 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数据结构与算法(PHP描述) 快速排序 quick sort
2012/06/21 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
2012/08/22 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
php采用curl模仿登录人人网发布动态的方法
2014/11/07 PHP
使用PHP访问RabbitMQ消息队列的方法示例
2018/06/06 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
2020/04/06 PHP
繁简字转换功能
2006/07/19 Javascript
jquery如何改变html标签的样式(两种实现方法)
2013/01/16 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
2013/07/09 Javascript
js限制checkbox选中个数以限制六个为例
2014/07/15 Javascript
JS实现文档加载完成后执行代码
2015/07/09 Javascript
js跨浏览器的事件侦听器和事件对象的使用方法
2015/12/17 Javascript
分享有关jQuery中animate、slide、fade等动画的连续触发、滞后反复执行的bug
2016/01/10 Javascript
AngularJS 应用模块化的使用
2018/04/04 Javascript
详解在Vue中使用TypeScript的一些思考(实践)
2018/07/06 Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
2020/04/11 Javascript
JavaScript, select标签元素左右移动功能实现
2020/05/14 Javascript
jquery实现简单自动轮播图效果
2020/07/29 jQuery
[16:56]heroes英雄教学 司夜刺客
2014/09/18 DOTA
[09:47]2018DOTA2亚洲邀请赛4.5SOLO赛 No[o]ne vs Sumail
2018/04/06 DOTA
python的urllib模块显示下载进度示例
2014/01/17 Python
Python 文件处理注意事项总结
2017/04/10 Python
python flask实现分页的示例代码
2018/08/02 Python
Windows10+anacond+GPU+pytorch安装详细过程
2020/03/24 Python
详解numpy1.19.4与python3.9版本冲突解决
2020/12/15 Python
python+selenium爬取微博热搜存入Mysql的实现方法
2021/01/27 Python
Html5 webRTC简单实现视频调用的示例代码
2020/09/23 HTML / CSS
英国二手iPhone、音乐、电影和游戏商店:musicMagpie
2018/10/26 全球购物
绿化先进工作者事迹材料
2014/01/30 职场文书
销售人员获奖感言
2014/02/05 职场文书
职业培训师职业生涯规划
2014/02/18 职场文书
应届生自荐信范文
2014/02/21 职场文书
网吧七夕活动策划方案
2014/08/31 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
在HTML中引入CSS的几种方式介绍
2021/12/06 HTML / CSS
Python编写车票订购系统 Python实现快递收费系统
2022/08/14 Python