Redis连接超时异常期间的Redis RPOP和LPOP

时间:2018-11-13 13:28:03

标签: redis stackexchange.redis pop

我在处理REDIS系统时遇到异常。

基本上,我有一个存储在Redis上的列表,并且2个客户端使用RPOP从中弹出项目。发生的事情可以这样总结:

0 -LIST LENGTH = 9
   CLIENT1.RPop() [got item]       CLIENT2.RPop() [got item]
1 -LIST LENGTH = 7
   CLIENT1.RPop() [got item]       CLIENT2.RPop() [got item]
2 -LIST LENGTH = 5
   CLIENT1.RPop() [got item]       CLIENT2.RPop()[nil] RedisTimeout
3 -LIST LENGTH = 3
   CLIENT1.RPop() [got item]       CLIENT2.RPop() [got item]

在第2步之后,我的代码未注册任何其他特殊操作。但是,当客户启动新的“弹出循环”时,超时中丢失的项目就像消失了一样。

所以我的问题是:

  • 是否有可能client2的请求到达了弹出项目的服务器(所以它不再存在于列表中)...但是响应丢失回到了客户端(因此项目)< / p>

  • 如果发生类似情况,是否有任何机制可以在超时异常后恢复丢失的项目?

谢谢

0 个答案:

没有答案