3

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

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

我有5台4G内存的机器,如果有人有一些材料来建立一个redis集群,也很有帮助。我有一些材料可以将集群设置为故障转移,但我需要的是设置负载平衡集群。

谢谢

4

1 回答 1

2

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

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

如果没有关于你的爬虫如何实际运行或与 Redis 交互的详细信息,这就是我能提供的。如果内存持续增长,则可能意味着您没有清理数据库。

于 2013-03-02T19:51:32.597 回答