scarpy-redis介绍

在这里插入图片描述

Scarpy-redis 分布式策略:

假设有四台电脑:windows10、mac os x、ubuntu 16.04、centos7,任意一台电脑作为master端或slaver端,比如:

* master端使用centos7,作为一个核心服务器,搭建一个redis数据库,不负责爬取,只负责url指纹判重、request的分布,以及数据的存储

* slaver端爬虫程序执行端,使用mac 、ubuntu、windows负责执行爬虫程序,运行过程中提交新的request给master

在这里插入图片描述

1. 首先salver端从master端拿任务(request、url)进行数据抓取,
2. master端只有一个redis数据库,负责将未处理的request去重和任务分配,将处理后的request加入待爬队列,并且存储爬取的数据。

Scarpy-redis默认使用的就是这种策略,我们实现起来很简单,因为任务调度等工作Scrapy-Redis都已经帮我们做好了,我们只需要继承RedisSpider、指定redis_key就行了。缺点是,Scrapy-Redis调度的任务是Request对象,里面信息量比较大(不仅包含url,还有callback函数、headers等信息),可能导致的结果就是会降低爬虫速度、而且会占用Redis大量的存储空间,所以如果要保证效率,那么就需要一定硬件水平

一、 安装redis

安装完成后,拷贝一份Redis安装目录下的redis.conf到任意目录,建议保存到:/etc/redis/redis.conf (Windows系统可以无需变动)

二、修改配置文件 redis.conf

忽略安装过程
打开你的redis.conf配置文件,示例:

* 非Windows系统: sudo vi /etc/redis/redis.conf

* Windows系统:C:\Intel\Redis\conf\redis.conf
  1. Master端redis.conf里注释bind 127.0.0.1,Slave端才能远程连接到Master端的Redis数据库
    在这里插入图片描述
* daemonize no表示Redis默认不作为守护进程运行,
  即在运行redis-server /etc/redis/redis.conf时,将显示Redis启动提示画面;
  
* daemonize yes则默认后台运行,不必重新启动新的终端窗口执行其他命令,
  看个人喜好和实际需要

在这里插入图片描述

三、测试Slave端远程连接Master端

测试中,Master端centos7的IP地址为:192.168.199.108

  1. Master端按指定配置文件启动 redis-server,示例:
* 非Windows系统:sudo redis-server /etc/redis/redis/conf

* Windows系统:命令提示符(管理员)模式下执行 redis-server C:\Intel\Redis\conf\redis.conf读取默认配置即可
  1. Master端启动本地redis-cli:
    在这里插入图片描述
  2. slave端启动redis-cli -h 192.168.199.108,-h 参数表示连接到指定主机的redis数据库在这里插入图片描述
    在这里插入图片描述
注意:Slave端无需启动redis-server,Master端启动即可。只要 Slave 端读取到了 Master 端的 Redis 数据库,则表示能够连接成功,可以实施分布式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值