【发布时间】:2017-08-02 10:45:24
【问题描述】:
寻找有关在使用 StackExchange.Redis 客户端时处理临时网络问题的指导。
为了澄清,我并不是说最初使用 ConnectionMultiplexer.Connect() 连接到 Redis 服务器。我指的是如何处理在操作过程中由于任何原因而中断的连接。 (我们可以假设命令是幂等的,StringSet,StringGet)
我问是因为我们正在从 ServiceStack 迁移到 StackExchange 客户端。在我们要替换的代码中,它使用了 ServiceStack,异常被捕获,并且在一个短的 thread.sleep() 之后将再次尝试该操作。这在我们的生产环境中相当频繁地发生,并且在大多数情况下重试会起作用。
通常是 System.Net.SocketException 并显示消息“已建立的连接已被主机中的软件中止”或“现有连接已被远程主机强制关闭”
如果抛出 System.Net.SocketException,StackExchange.Redis 是否会自动重试,直到经过 syncTimeout 时间?
如果 SE.Redis 没有自动重试,在我们的代码中,在初始操作失败和重试之间是否有任何建议的步骤?如:
- 等待一小段时间?
- 重新创建多路复用器? (我猜不是)
- 调用 Close() 和 Configure()?
感谢您的指导。
【问题讨论】:
标签: c# redis stackexchange.redis