我有几个用python编写的工作人员正在解析页面和获取链接。我正试图找出一种他们可以协调的方式,这样他们就不会重复地打同一个位置。
我想我可以用Redis做这个。我正在尝试构建一个集合类型的任意大小(比如10000个项目)的循环队列,以便在解析链接之前,可以使用sismember来验证最近没有访问过链接(并且不必担心输入同一个链接两次)。我已经用python集在内存中完成了这项工作,但这只适用于特定的工作者。
这可能吗?我看到的另一种可能性是建立一组未指定大小的超时附加到各个成员。我最近才开始使用redis,所以我不确定这两种方法是否可行。

最佳答案

伊朗方面给出了一个很好的答复,但他并没有补充作为答复。一种方法是在redis上添加一个内存限制,这样最旧的数据就会被逐出。在redis的网站上记录了设置这个程序:http://redis.io/topics/lru-cache
在我的特定用例中,我做了一些不同的事情,对于page,我解析了域名,并将使用此信息生成的密钥和任意数据一起放入redis中,并有一个与之相关联的超时。然后,每个工作人员将在尝试分析该特定站点上的任何页面之前检查此密钥。

08-18 14:11
查看更多