我在写一个爬虫。我将访问的urls保存在redis设置中,并使用redis list维护作业队列。随着数据的增长,内存被耗尽,我的内存是4G。如何在没有redis的情况下维护这些内容?我不知道,如果我将它们存储在文件中,它们也需要在内存中。
如果我使用mysql来存储,我想它可能比redis慢得多。
我有5台4G内存的机器,如果任何人有一些材料来建立一个redis集群,它也会有很大帮助。我有一些材料可以设置一个要进行故障转移的集群,但我需要的是设置一个负载平衡集群。
thx
发布于 2013-03-03 03:51:33
如果您只是在执行向集合和列表添加/删除的基本操作,请查看twemproxy/nutcracker。有了它,你可以使用所有的节点。
关于您的使用模式本身,您是否正在删除作业和URL或使其过期?系统中有多少重复?例如,您是否重复搜索相同的URL?如果是这样,您可能只需要URL到其上次爬行时间的映射,而不是作业队列,而不是提取自上次运行以来新的URL或给定窗口之外的URL。
没有关于你的爬虫如何实际运行或与Redis交互的细节,这就是我所能提供的。如果内存持续增长,很可能意味着你没有清理数据库。
https://stackoverflow.com/questions/14808478
复制相似问题