我一直使用Redis作为队列在分布式python脚本之间进行通信。在任何时候,一些节点都会推送,一些节点会从列表中弹出值。
然而,我遇到了一个问题。在某一点上,LPUSH将使服务器耗尽memmory。据我所知,Redis中曾经存在的虚拟内存功能直到版本2.4被认为已被弃用(因此建议不要使用)。我遇到的问题是丢弃任何密钥的策略是不可接受的。因此,服务器配置为noeviction(不会驱逐值,并且应返回错误)。
我需要的是一种方法来发现命令从redis-py失败,所以我可以使特定节点等待,直到有空间将项目推入列表。我查看了代码,redis-py本身没有例外(它没有使用异常作为设计选择)。
LPUSH本身返回该特定列表中的记录数,但是,由于该列表是从不同节点访问的,因此该值本身不会告诉我任何内容。
我是如何实现这一目标的?
请告诉我有关问题性质的任何其他信息是否有助于澄清问题。