Redis加快批量插入数据速度的方法: redis pipline 分块插入

一:前言

平时使用python写入redis集合都是一条一条插入,当数据量很大的时候就会出现速度非常慢或者直接报错现象。今天记录一下两种加快插入速度的方式:

  1. 利用redis pipline 管道技术
  2. 把需要插入的数据分块批量插入

二:实战代码

举个例子需要添加3000万的数字用于后面分布式爬虫构造url,现在需要把3000万的数字插入redis数据库。
1.普通的插入redis set集合方法

r = redis.Redis(host="127.0.0.1", port=6379)
for i in range(1, 3 * 10 ** 8):
    r.sadd('xxxxx', i)

数据量少还行,一次插入这么多数据一般就会出现问题。

2.利用redis pipline 管道技术

r = redis.Redis(host="127.0.0.1", port=6379)
pipeline = r.pipeline()
for i in range(1, 3 * 10 ** 8):
    pipeline.sadd('xxxxx', i)
pipeline.execute()

这种操作相当于写了一堆的命令一次性执行完,一旦某个命令出问题那么这次插入数据就会失败。这种方式的好处。节省了本机与redis服务器链接的 IO 延时,一般来说节省了很多时间。

3.把需要插入的数据分块批量插入

for i in range(30):
   ls = list(range(i*1000000,(i+1)*1000000))
   r.sadd('xxxxx', *ls)

如果需要插入的数据不是这里的数字分块方法就需要换了,这样的方式是一次插入多个数据,不会出现使用pipline如果某个命令出问题就全部插入失败的现象,速度非常快,比使用pipline 的方式快了几倍。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,016评论 2 89
  • 本文将从Redis的基本特性入手,通过讲述Redis的数据结构和主要命令对Redis的基本能力进行直观介绍。之后概...
    kelgon阅读 61,264评论 23 625
  • 蛾破茧虫无 楚无林见日 自下流有犬 蝉得偶脱单
    家乡桃花开了阅读 145评论 0 0
  • 夏天的夜,淡墨色的氤氲,从窗帘处撤出的微黄的斜光。一个人无聊而又有心事地躺在床上,虽然旁边就是昏头大睡的老公。不知...
    文皮儿阅读 217评论 0 0
  • 少年觉得这张网是吊床,其实是个网
    二货纯纯阅读 140评论 0 0