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(文内赋赠教程)...相关推荐

  1. 教你一招超级简单的方法快速搞定grub.conf文件的丢失及损坏

    教你一招超级简单的方法快速搞定grub.conf文件的丢失及损坏 实验环境: GRUB是大多数Linux系统默认使用的引导程序,当"/boot/grub/grub.conf"配置文 ...

  2. python离散求导数_Python求离散序列导数的示例

    有一组4096长度的数据,需要找到一阶导数从正到负的点,和三阶导数从负到正的点,截取了一小段. 394.0 388.0 389.0 388.0 388.0 392.0 393.0 395.0 395. ...

  3. python录音详解_Python爬虫实战案例:取喜马拉雅音频数据详解

    前言 喜马拉雅是专业的音频分享平台,汇集了有声小说,有声读物,有声书,FM电台,儿童睡前故事,相声小品,鬼故事等数亿条音频,我最喜欢听民间故事和德云社相声集,你呢? 今天带大家爬取喜马拉雅音频数据,一 ...

  4. python抓取交易所_python爬取上海石油天然气交易中心液化天然气交易数据并可视化分析...

    由于之前从事过石化行业,上海石油天然气交易中心成立虽较晚(2015年成立),但一直有关注,去年下半年由于大量供暖采取煤改气,还一个没有霾笼罩的冬天,因此出现了天然气大幅涨价供不应求的状况,闲着没事就用 ...

  5. mysql 分批提交_spark dataframe 数据批量写入 redis(pipeline、分批提交)

    使用 python 的 spark 模块,即 pyspark,通过 spark sql 从 hive 或 mysql 等存储层读取相关数据,对应 spark 的 dataframe 对象,经过一系列的 ...

  6. python编程求导数_Python求导数的方法

    本文实例讲述了Python求导数的方法.分享给大家供大家参考.具体实现方法如下: def func(coeff): sum='' for key in coeff: sum=sum+'+'+str(k ...

  7. python如何高效办公_Python教你高效办公,自制屏幕翻译工具

    python视频教程栏目为大家介绍Python自制屏幕翻译工具的方法. 免费推荐:python视频教程 1. 场景 大家如果平常遇到不认识的英文,相信大部分的人都会复制内容后,使用翻译软件,或者拷贝到 ...

  8. python课件百度文库_python教-教学课件.doc

    python教-教学课件 第五单元 进阶程序设计(总10课时) 选择编程语言(1课时) 一.教学目标 1.了解程序设计语言和两种翻译方式:了解Python背景.功能.安装,熟悉Python编程环境:编 ...

  9. python代码写名字_python|教你一行代码用Ta的名字比心

    关注我们:科技与Python 故事是这样的:你的女朋友名字叫andy,由于她学习上的需求,需要学习一些编程.(当然作为男朋友,是很有义务帮女朋友解决问题的.) 教他写程序的时候,如果先秀一下这行代码, ...

最新文章

  1. 执行sql语句_一条SQL查询语句是如何执行的?
  2. usb 驱动修复_您可以修复物理损坏的USB驱动器吗?
  3. POJ1330-Nearest Common Ancestors【tarjan,LCA】
  4. 程序员:代码全部替换成中文,你能接受吗?
  5. Loadrunner 第一个场景设计Controller
  6. GDAL插值使用示例
  7. 图像分割(二):高斯混合模型(GMM)方法
  8. Testbench编写
  9. 2020成人高考计算机基础知识题库,2020年成人高考计算机基础考试模拟题
  10. 关于AVOD, 你需要知道的事
  11. U盘文件都变成exe文件怎么办(已解决)
  12. 自娱自乐的FreeRTOS——config.h配置文件详解
  13. 纪念一下获得十大优秀学生
  14. 一元二次方程的解c语言,一元二次方程求解程序完整代码
  15. 怎么把桌面文件发到计算机文件夹E,怎么把桌面文件默认到d盘
  16. C语言中指向函数的指针(我见过的讲的最清晰的文章)
  17. 度度熊与邪恶大魔王 (百度之星之资格赛)
  18. Python qrcode模块(生成二维码)
  19. 计算机数据恢复试题,数据恢复半期考试试题答案.doc
  20. 板材品牌之实木与生态板的比较

热门文章

  1. 坑,MySQL中 order by 与 limit 混用,分页会出现问题!
  2. mariadb java_java 连接mariadb 无法获取数据源的问题,在ubuntu上部署的时候(原创)...
  3. C语言三个结束符:EOF ‘\0’ '\n'
  4. Shiro学习(24)在线回话管理
  5. Spring学习8-Spring事务管理(注解式声明事务管理)
  6. android支付宝余额怎么做,android实现类似于支付宝余额快速闪动的效果 -电脑资料...
  7. bgp通告四原则_华为路由器BGP路由选路和负载均衡
  8. 蒂森电梯服务器显示4480,成都电梯豪宅市场分析专题报告.docx
  9. python 个人项目_80个Python练手项目列表,学完立马成大神 牛逼了
  10. android设置屏幕高度和宽度设置,Android手机的屏幕宽高度和代码设置控件的宽高度...