Scrapy_redis分布式原理

今天分享一下Scrapy_redis分布式原理:
1 scrapy_redis是什么

Scrapy_redis : Redis-based components for Scrapy.

Github地址:<https://github.com/rmax/scrapy-redis>

在这个地址中存在三个demo,后续我们对scrapy_redis的使用会通过这三个demo展开

2 为什么要学习scrapy_redis

Scrapy_redis在scrapy的基础上实现了更多,更强大的功能,具体体现在:

-   请求对象的持久化
-   去重的持久化
-   和实现分布式

 3 scrapy_redis的原理分析

3.1 回顾scrapy的流程

那么,在这个基础上,如果需要实现分布式,即多台服务器同时完成一个爬虫,需要怎么做呢?

3.2 scrapy_redis的流程

-   在scrapy_redis中,所有的带抓取的对象和去重的指纹都存在所有的服务器公用的redis中
-   所有的服务器公用一个redis中的request对象
-   所有的request对象存入redis前,都会在同一个redis中进行判断,之前是否已经存入过
-   在默认情况下所有的数据会保存在redis中

具体流程如下:

 

4 对于redis的复习

很多人对redis的命令遗忘的差不多了, 但是在scrapy_redis中需要使用redis的操作命令,所有需要回顾下redis的命令操作

4.1 redis是什么

redis是一个开源的内存型数据库,支持多种数据类型和结构,比如列表、集合、有序集合等,同时可以使用redis-manger-desktop等客户端软件查看redis中的数据,关于redis-manger-desktop的使用可以参考扩展阅读

4.2 redis服务端和客户端的启动

-   `/etc/init.d/redis-server start` 启动服务端
-   `redis-cli -h <hostname> -p <端口号>` 客户端启动

4.3 redis中的常见命令

1.  `select 1` 切换db
1.  `keys *` 查看所有的键
1.  `tyep 键` 查看键的类型
1.  `flushdb` 清空db
1.  `flushall` 清空数据库

4.4 redis命令的复习

redis的命令很多,这里我们简单提及一下后续会使用的命令:

列表:

LPUSH mylist "world"   >向mylist从左边添加一个值

LRANGE mylist 0 -1     >返回mylist中所有的值

LLEN mylis             >返回mylist的长度

set:

redis> SADD myset "Hello"   >往set中添加数据

SMEMBERS mysetredis>        >获取myset中所有的元素

redis>SCARD myset           >scrad 获取数量

zset:

redis> ZADD myzset 1 "one"

(integer) 1

redis> ZADD myzset 2 "two" 3 "three"

(integer) 2

redis> ZRANGE myzset 0 -1 WITHSCORES

1) "one"

10

3"two"

4)121

5"three"

6)131

redis> ZCARD myzset

zadd 向一个zset中添加一个值和分数,如果存在值就更新分数,分数可以相同zrange 遍历myzesetzcard 返回zset中元素的数量
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不喜欢穿格子衫的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值