c# - 在 StackExchange.Redis 中维护 ConnectionMultiplexer 对象的正确方法是什么?

标签 c# redis stackexchange.redis redislabs

我正在将 ConnectionMultiplexer 静态对象存储在 ASP.NET MVC 网站中,速度达到 ~500req/sec,这会触发 RedisLabs 上的 Redis 实例。偶尔我会看到错误提示 SocketFailure on EVAL 以及 RedisLabs 仪表板上的连接数增加。我应该处理旧的 ConnectionMultiplexer 实例并重新创建新实例还是在出现这些异常后尝试手动重新连接?

最佳答案

系统应该尝试自动重新连接。它做的是重试您的命令,因为它无法知道在服务器上完成了什么和没有完成什么(因为:套接字失败;就其所知,“ok”响应可能已经由 redis 发送了)。

因此,您不需要处理/重新连接。您可以通过在多路复用器实例上发布的事件监视连接失败/重新连接。您还可以在数据库上使用 .IsConnected() 方法(出于服务器目标原因,这需要一个 key ,但如果您只与一台服务器通信,则可以将任何内容作为 key 传递)。

关于c# - 在 StackExchange.Redis 中维护 ConnectionMultiplexer 对象的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25642058/

相关文章:

c# - 将 Umbraco 网站复制到另一个帐户

c# - 如何在保留调试器功能的同时从子进程报告自定义错误字符串

使用 call_user_func_array 插入时 redis 丢失 key

ruby - 如何从 sidekiq 队列中删除特定类别的作业?

javascript - Node 重启时丢失所有 Kue/Redis 作业

Azure Redis 慢日志重复错误 "EVALSHA"

c# - 如何在 fluent nHibernate 中指定 Columntype?

c# - 错误 0004 : Could not load file or assembly 'MySql. 数据.Entity,版本=6.9.7.0

asp.net - 使用 Redis 缓存替换 Windows Azure 缓存?

c# - 如何使用 stackexchange.redis 从多个键中获取所有哈希元素