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将mdb数据库文件导入postgresql数据库示例
Feb 17 Python
python的三目运算符和not in运算符使用示例
Mar 03 Python
详解Python中的条件判断语句
May 14 Python
Python获取央视节目单的实现代码
Jul 25 Python
Python微信公众号开发平台
Jan 25 Python
详解Python中的动态属性和特性
Apr 07 Python
使用python3+xlrd解析Excel的实例
May 04 Python
可能是最全面的 Python 字符串拼接总结【收藏】
Jul 09 Python
pandas 透视表中文字段排序方法
Nov 16 Python
python格式化输出保留2位小数的实现方法
Jul 02 Python
python 实现多维数组转向量
Nov 30 Python
Python join()函数原理及使用方法
Nov 14 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
星际争霸任务指南——神族
2020/03/04 星际争霸
在线竞拍系统的PHP实现框架(一)
2006/10/09 PHP
PHP IF ELSE简化/三元一次式的使用
2011/08/22 PHP
ThinkPHP的MVC开发机制实例解析
2014/08/23 PHP
Yii2简单实现给表单添加验证码的方法
2016/07/18 PHP
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
在JavaScript中重写jQuery对象的方法实例教程
2014/08/25 Javascript
jQuery实现复选框批量选择与反选的方法
2015/06/17 Javascript
Bootstrap禁用响应式布局的实现方法
2017/03/09 Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
2017/04/13 Javascript
JavaScript实现的冒泡排序法及统计相邻数交换次数示例
2017/04/26 Javascript
Bootstrap datepicker日期选择器插件使用详解
2017/07/26 Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
2018/01/12 Javascript
JavaScript 链表定义与使用方法示例
2020/04/28 Javascript
微信小程序实现星星评分效果
2020/11/01 Javascript
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
[53:36]Liquid vs VP Supermajor决赛 BO 第三场 6.10
2018/07/05 DOTA
Python中使用item()方法遍历字典的例子
2014/08/26 Python
python中的闭包用法实例详解
2015/05/05 Python
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
python梯度下降法的简单示例
2018/08/31 Python
python numpy元素的区间查找方法
2018/11/14 Python
Pycharm取消py脚本中SQL识别的方法
2018/11/29 Python
Python的UTC时间转换讲解
2019/02/26 Python
Django实现文件上传下载功能
2019/10/06 Python
python基于pygame实现飞机大作战小游戏
2020/11/19 Python
python中scipy.stats产生随机数实例讲解
2021/02/19 Python
技术副厂长岗位职责
2013/12/26 职场文书
业务副厂长岗位职责
2014/01/03 职场文书
迎新晚会邀请函
2014/02/01 职场文书
大学生就业策划书范文
2014/04/04 职场文书
党员查摆四风问题思想汇报
2014/10/25 职场文书
皇城相府导游词
2015/02/06 职场文书
python实现求纯色彩图像的边框
2021/04/08 Python
Oracle创建只读账号的详细步骤
2021/06/07 Oracle
Windows server 2012 配置Telnet以及用法详解
2022/04/28 Servers