如何正确维护 StackExchange.Redis 中的 ConnectionMultiplexer 对象?

3

我正在将ConnectionMultiplexer静态对象存储在ASP.NET MVC网站中,该网站每秒获得约500个请求,这些请求会打到RedisLabs上的Redis实例。偶尔我会看到错误消息:EVAL上的SocketFailure以及RedisLabs仪表板上的连接数增加。我应该处理旧的ConnectionMultiplexer实例并重新创建新的实例,还是在出现这些异常后尝试手动重新连接?

1个回答

2
系统应该自动尝试重新连接。但是它不会重试您的命令,因为它无法知道服务器上已经完成或未完成的操作(因为:套接字失败;它可能已经发送了“ok”响应)。所以,您不需要处理/重新连接。您可以通过多路复用器实例上发布的事件来监视连接失败/重新连接。您还可以在数据库上使用.IsConnected()方法(这需要一个用于服务器定位的键,但如果您只与一个服务器通信,则可以将任何内容作为键传递)。

感谢您的快速回复。那么关于这些增加的连接数呢?我正在运行5个asp.net实例,通常看到10个连接,但在SocketFailure错误后,连接计数增加到+70?让我担心的是ConnectionMultiplexer正在打开新连接并留下旧连接。 - pauliusnrk
@Paul 这很奇怪,我能重现吗? - Marc Gravell
我们很乐意提供任何帮助 - 如果您需要我们,请告诉我/support@redislabs.com :) - Itamar Haber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接