python往redis导数_Python:教你一招,将500W+的数据快速写入redis(文内赋赠教程)...
Python:教你一招,将500W+的数据快速写入redis(文内赋赠教程)
作者:PHPYuan 时间:2019-03-14 03:40:44
最近遇到一个问题:用python写500W+的数据到redis,时间要花费2小时左右。该如何优化呢?
redis介绍
Redis是REmote DIctionary Server的缩写。对Redis的作用的不同解读决定了你对Redis的使用方式。如果你认为Redis是一个key value store, 那可能会用它来代替MySQL;如果认为它是一个可以持久化的cache, 可能只是用它保存一些频繁访问的临时数据。有一些看法则认为Redis是一个memory database,因为它的高性能都是基于内存操作的基础。另外一些人则认为Redis是一个data structure server,因为Redis支持复杂的数据特性,比如List, Set等。
互联网数据目前基本使用两种方式来存储,关系数据库或者key value( NoSQL)。但是这些互联网业务本身并不属于这两种数据类型,比如用户在社会化平台中的关系,它是一个list,如果要用关系数据库存储就需要转换成一种多行记录的形式,这种形式存在很多冗余数据,每一行需要存储一些重复信息。如果用key value存储则修改和删除比较麻烦,需要将全部数据读出再写入。Redis在内存中设计了各种数据类型,让业务能够高速原子的访问这些数据结构,并且不需要关心持久存储的问题,从架构上解决了前面两种存储需要走一些弯路的问题。
redis数据类型
String
string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
Python:教你一招,将500W+的数据快速写入redis
Hash
Redis hash 是一个 string 类型的 key 和 value 的映射表,hash 特别适合用于存储对象。
Python:教你一招,将500W+的数据快速写入redis
List
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
Python:教你一招,将500W+的数据快速写入redis
Set
Redis的Set是string类型的无序集合。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
Python:教你一招,将500W+的数据快速写入redis
zset
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。 不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。
redis在推荐系统中的使用
目前我们是把所有模型计算的结果用zset的数据结构写入redis,其中key的设计为:
Python:教你一招,将500W+的数据快速写入redis
value是商品ID和商品分数的字典表。
利用pipeline和多线程写大量数据到redis
Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤:客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。
服务端处理命令,并将结果返回给客户端。
Redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。能够有效地提高redis服务的性能。
Python:教你一招,将500W+的数据快速写入redis
500万条数据用pipeline和不用pipeline时间测试
Python:教你一招,将500W+的数据快速写入redis
用pipeline
Python:教你一招,将500W+的数据快速写入redis
可见,500万条数据在使用pipeline比不适用pileline速度快了一倍~是不是可以用多线程让它再快一些呢
最后,想学习Python的小伙伴们!
请关注+私信回复:“学习”就可以拿到一份我为大家准备的Python学习资料!
pytyhon学习资料
python学习资料
分享到:
<< 上一篇:喜大普奔!F5以6.7亿美元收购Nginx (2019-03-14 03:40)
python往redis导数_Python:教你一招,将500W+的数据快速写入redis(文内赋赠教程)...相关推荐
- 教你一招超级简单的方法快速搞定grub.conf文件的丢失及损坏
教你一招超级简单的方法快速搞定grub.conf文件的丢失及损坏 实验环境: GRUB是大多数Linux系统默认使用的引导程序,当"/boot/grub/grub.conf"配置文 ...
- python离散求导数_Python求离散序列导数的示例
有一组4096长度的数据,需要找到一阶导数从正到负的点,和三阶导数从负到正的点,截取了一小段. 394.0 388.0 389.0 388.0 388.0 392.0 393.0 395.0 395. ...
- python录音详解_Python爬虫实战案例:取喜马拉雅音频数据详解
前言 喜马拉雅是专业的音频分享平台,汇集了有声小说,有声读物,有声书,FM电台,儿童睡前故事,相声小品,鬼故事等数亿条音频,我最喜欢听民间故事和德云社相声集,你呢? 今天带大家爬取喜马拉雅音频数据,一 ...
- python抓取交易所_python爬取上海石油天然气交易中心液化天然气交易数据并可视化分析...
由于之前从事过石化行业,上海石油天然气交易中心成立虽较晚(2015年成立),但一直有关注,去年下半年由于大量供暖采取煤改气,还一个没有霾笼罩的冬天,因此出现了天然气大幅涨价供不应求的状况,闲着没事就用 ...
- mysql 分批提交_spark dataframe 数据批量写入 redis(pipeline、分批提交)
使用 python 的 spark 模块,即 pyspark,通过 spark sql 从 hive 或 mysql 等存储层读取相关数据,对应 spark 的 dataframe 对象,经过一系列的 ...
- python编程求导数_Python求导数的方法
本文实例讲述了Python求导数的方法.分享给大家供大家参考.具体实现方法如下: def func(coeff): sum='' for key in coeff: sum=sum+'+'+str(k ...
- python如何高效办公_Python教你高效办公,自制屏幕翻译工具
python视频教程栏目为大家介绍Python自制屏幕翻译工具的方法. 免费推荐:python视频教程 1. 场景 大家如果平常遇到不认识的英文,相信大部分的人都会复制内容后,使用翻译软件,或者拷贝到 ...
- python课件百度文库_python教-教学课件.doc
python教-教学课件 第五单元 进阶程序设计(总10课时) 选择编程语言(1课时) 一.教学目标 1.了解程序设计语言和两种翻译方式:了解Python背景.功能.安装,熟悉Python编程环境:编 ...
- python代码写名字_python|教你一行代码用Ta的名字比心
关注我们:科技与Python 故事是这样的:你的女朋友名字叫andy,由于她学习上的需求,需要学习一些编程.(当然作为男朋友,是很有义务帮女朋友解决问题的.) 教他写程序的时候,如果先秀一下这行代码, ...
最新文章
- 执行sql语句_一条SQL查询语句是如何执行的?
- usb 驱动修复_您可以修复物理损坏的USB驱动器吗?
- POJ1330-Nearest Common Ancestors【tarjan,LCA】
- 程序员:代码全部替换成中文,你能接受吗?
- Loadrunner 第一个场景设计Controller
- GDAL插值使用示例
- 图像分割(二):高斯混合模型(GMM)方法
- Testbench编写
- 2020成人高考计算机基础知识题库,2020年成人高考计算机基础考试模拟题
- 关于AVOD, 你需要知道的事
- U盘文件都变成exe文件怎么办(已解决)
- 自娱自乐的FreeRTOS——config.h配置文件详解
- 纪念一下获得十大优秀学生
- 一元二次方程的解c语言,一元二次方程求解程序完整代码
- 怎么把桌面文件发到计算机文件夹E,怎么把桌面文件默认到d盘
- C语言中指向函数的指针(我见过的讲的最清晰的文章)
- 度度熊与邪恶大魔王 (百度之星之资格赛)
- Python qrcode模块(生成二维码)
- 计算机数据恢复试题,数据恢复半期考试试题答案.doc
- 板材品牌之实木与生态板的比较
热门文章
- 坑,MySQL中 order by 与 limit 混用,分页会出现问题!
- mariadb java_java 连接mariadb 无法获取数据源的问题,在ubuntu上部署的时候(原创)...
- C语言三个结束符:EOF ‘\0’ '\n'
- Shiro学习(24)在线回话管理
- Spring学习8-Spring事务管理(注解式声明事务管理)
- android支付宝余额怎么做,android实现类似于支付宝余额快速闪动的效果 -电脑资料...
- bgp通告四原则_华为路由器BGP路由选路和负载均衡
- 蒂森电梯服务器显示4480,成都电梯豪宅市场分析专题报告.docx
- python 个人项目_80个Python练手项目列表,学完立马成大神 牛逼了
- android设置屏幕高度和宽度设置,Android手机的屏幕宽高度和代码设置控件的宽高度...