寻找使用StackExchange.Redis客户端时处理临时网络问题的指导。使用StackExchange处理瞬时网络错误.Redis
为了说明起见,我并不是说最初使用ConnectionMultiplexer.Connect()连接到Redis服务器。我指的是如何处理在操作中出于任何原因而中断的连接。 (我们可以假设命令是幂等的,StringSet,StringGet)
我问,因为我们正在从ServiceStack迁移到StackExchange客户端。在我们正在替换的代码中,它使用ServiceStack,捕获异常并在短的thread.sleep()之后再次尝试操作。这种情况在我们的生产环境中相当频繁地发生,并且在大多数情况下重试都可以工作。
通常它与“一个已建立的连接是通过软件在主机中止”的消息一System.Net.SocketException或
如果一个系统“的现有连接被强行关闭远程主机”。 Net.SocketException被抛出,StackExchange.Redis会自动重试,直到syncTimeout时间已过?
如果SE.Redis不会自动重试,那么在初始操作失败和我们的代码中重试之间是否存在应该发生的建议步骤?如:
- 等待一小段时间?
- 重新创建多路复用器? (我猜不是)
- 调用Close()和Configure()?
感谢您的任何指导。
谢谢你的建议。你是否意识到有一个线索提供了关于你提到的长期错误的更多信息? – eoldre
在github上打开了大约一打的副本 https://github.com/StackExchange/StackExchange.Redis/issues/269 –