前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis大批量上传数据 使用shell与python脚本

Redis大批量上传数据 使用shell与python脚本

作者头像
十四君
修改2019-11-26 09:57:14
1.4K0
修改2019-11-26 09:57:14
举报
文章被收录于专栏:Urlteam

需求是:有大量的ip地址,作为分布式爬虫的任务分配,需要加入到redis队列中,如果使用数据库提取+for+redis-lpush的方式速度非常慢,大约放80w数据就得4-5个小时(网络状况而定)。目前需要将6.5kw的数据放到redis所以需要改进队列方式。

1:使用步骤

首先将数据库中提取ip列表,转换成 保存为data.txt文本

  • order key value1
  • order key value2
  • order key value3

这样的格式。order可以是rpush,set这样的redis队列。

2:使用如下的bash脚本 保存为:redis-pipe.sh

代码语言:javascript
复制
#!/usr/bin/env bash

while read CMD; do
  # each command begins with *{number arguments in command}\r\n
  XS=($CMD); printf "*${#XS[@]}\r\n"
  # for each argument, we append ${length}\r\n{argument}\r\n
  for X in $CMD; do printf "\$${#X}\r\n$X\r\n"; done
done

放在同一目录下:

代码语言:javascript
复制
cat data.txt | sh redis-pipe.sh | redis-cli --pipe

如果报:Syntax error: “(” unexpected (expecting “done”) 错误 解决方式是  cat data.txt | bash crate.sh | redis-cli –pipe    将sh 改成bash 。。

如果暂时没有数据想做测试的可以用这个命令生成一个data.txt

代码语言:javascript
复制
for N in $(seq 1 1000); do echo "SADD test $N"; done > data.txt

之后在redis-cli 中就可以改一些参数比如-p制定端口 -h 制定ip地址 -a 制定密码

2:原理分析

处理redis-cli –pipe导入需要的redis Protocol数据格式

代码语言:javascript
复制
*3
$5
lpush
$9
baidu_api
$11
42.2.162.72
 
*3
$5
lpush
$9
baidu_api
$11
42.2.162.73

格式说明如下:

  • *3 #表示有3个参数
  • $5 #表示“参数”有三个字节(“lpush”字符串为5个字节)
  • lpush #执行的命令
  • $8 # key有 8个字节
  • wolys101 #key对应的值
  • $12 # value的长度
  • wolysopen111 #value的值
  •   # 一条语句结束
  • 每行默认以 \r\n 结尾
  • 同时在执行玩一行后,以 \r\n 代码一条语句结束

参考网站资料:

http://redis.io/topics/mass-insert

https://gist.github.com/abtrout/432ce44fa77a9620c739#file-redis-pipe-md

原创文章,转载请注明: 转载自URl-team

本文链接地址: Redis大批量上传数据 使用shell与python脚本

Related posts:

  1. Scrapy笔记三 自动多网页爬取-本wordpress博客所有文章
  2. 反爬虫之检测PhantomJS访客(翻译文)
  3. 使用phantomjs采集运用了强制跳转与页面等待等反爬技术的网站
  4. 千万级批量采集框架,就叫他UrlSpider吧
  5. Python模拟登录的几种方法(转)
  6. python 爬虫 过滤全部html标签 提取正文内容
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-09-212,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1:使用步骤
  • 2:原理分析
    • 格式说明如下:
    • 参考网站资料:
      • Related posts:
      相关产品与服务
      云数据库 Redis
      腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档