如何在编写爬虫时保留访问过的URL并维护作业队列

时间:2013-02-11 08:37:43

标签: redis web-crawler

我正在写一个爬虫。我将访问过的URL保存在redis中,并使用redis列表维护作业队列。随着数据的增长,内存耗尽,我的内存为4G。如何在没有redis的情况下维护这些?我不知道,如果我将它们存储在文件中,它们也需要在内存中。

如果我使用mysql存储它,我认为它可能比redis慢得多。

我有5台带有4G内存的机器,如果有人有一些材料来设置redis集群,它也会有很大帮助。我有一些材料来设置要进行故障转移的集群,但我需要的是设置负载平衡集群。

THX

1 个答案:

答案 0 :(得分:2)

如果您只是在进行添加/删除集和列表的基本操作,请查看twemproxy/nutcracker。有了它,您可以使用所有节点。

关于您的使用模式本身,您是删除或过期的作业和网址吗?系统中有多少重复?例如,您是否反复抓取相同的网址?如果是这样,也许您只需要将URL映射到其上次爬网时间,而不是作业队列,您可以从最后一次运行后拉出新的或在给定窗口之外的URL。

如果没有关于您的抓取工具实际运行或与Redis交互的详细信息,那就是我可以提供的内容。如果内存不断增长,则可能意味着您没有清理数据库。