Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的Redis循环集?_Python_Redis_Set_Circular Buffer_Circular List - Fatal编程技术网

python中的Redis循环集?

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

我有几个用python编写的工作人员正在解析页面和获取链接。我正试图找出一种方法,让他们能够协调,这样他们就不会重复击中相同的位置

我想我可以用redis做这个。我正试图构建一个集合类型的任意大小(比如10000个项目)的循环队列,这样我就可以使用sismember在解析一个链接之前验证该链接是否最近没有被访问过(并且不必担心输入同一链接两次)。我已经在使用python集的内存中完成了这项工作,但这只适用于特定的工作者


这可能吗?我看到的另一种可能性是构建一个未指定大小的集合,并将超时附加到各个成员。我最近才开始使用Redis,所以我不确定这两种方法是否可行。

Pirat000给出了一个很好的回答,但他没有补充回答。实现这一点的一种方法是在redis上添加内存限制,以便收回最旧的数据。redis的网站上记录了设置此项的程序:


在我的特定用例中,我做了一些不同的事情,对于页面,我解析出域名,并将使用此信息生成的密钥和任意数据放入redis中,并与之相关联的超时。然后,每个工作人员在试图解析该特定站点上的任何页面之前,都会检查该密钥。

Pirat000给出了一个很好的响应,但他没有将其添加为答案。实现这一点的一种方法是在redis上添加内存限制,以便收回最旧的数据。redis的网站上记录了设置此项的程序:


在我的特定用例中,我做了一些不同的事情,对于页面,我解析出域名,并将使用此信息生成的密钥和任意数据放入redis中,并与之相关联的超时。然后,每个工作人员在尝试解析该特定站点上的任何页面之前都会检查该键。

看看,您可以限制redis在
MaxMemory
Config中使用的最大内存量。我想我找到了一个很好的解决方法。我正在创建一个主机名为的密钥,我想设置一个时间限制,然后在实际拨打电话之前检查密钥是否存在。仍然需要使用多个worker进行测试,但它似乎可以工作。看看,您可以限制redis在
MaxMemory
Config中使用的最大内存量。我想我找到了一个很好的解决方法。我正在创建一个主机名为的密钥,我想设置一个时间限制,然后在实际拨打电话之前检查密钥是否存在。仍然需要使用多个工作人员进行测试,但它看起来会起作用。