c# – ConnectionMultiplexer如何处理断开连接?
发布时间:2020-12-15 17:47:10 所属栏目:百科 来源:网络整理
导读:StackExchange.Redis的 Basic Usage文档解释说,ConnectionMultiplexer是长期存在的,预计将被重用. 但是当与服务器的连接断开时呢? ConnectionMultiplexer会自动重新连接,还是需要按照this answer(引用答案)编写代码: if (RedisConnection == null || !Redi
StackExchange.Redis的
Basic Usage文档解释说,ConnectionMultiplexer是长期存在的,预计将被重用.
但是当与服务器的连接断开时呢? ConnectionMultiplexer会自动重新连接,还是需要按照this answer(引用答案)编写代码: if (RedisConnection == null || !RedisConnection.IsConnected) { RedisConnection = ConnectionMultiplexer.Connect(...); } RedisCacheDb = RedisConnection.GetDatabase(); 上述代码是否有助于从断开连接中处理恢复,还是会实际产生多个ConnectionMultiplexer实例?同样的,IsConnected属性应如何解释? [旁白:我相信上面的代码是一个非常糟糕的懒惰初始化形式,特别是在多线程环境中 – 参见Jon Skeet’s article on Singletons]. 解决方法
这是
pattern recommended by the Azure Redis Cache team:
private static Lazy<ConnectionMultiplexer> lazyConnection = new Lazy<ConnectionMultiplexer>(() => { return ConnectionMultiplexer.Connect("mycache.redis.cache.windows.net,abortConnect=false,ssl=true,password=..."); }); public static ConnectionMultiplexer Connection { get { return lazyConnection.Value; } } 几点要点: >它使用Lazy< T>处理线程安全初始化>它设置“abortConnect = false”,这意味着如果初始连接尝试失败,ConnectionMultiplexer将在后台静默重试而不是抛出异常.>它不检查IsConnected属性,因为如果连接被删除,ConnectionMultiplexer会在后台自动重试. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c# – DirectoryInfo.EnumerateFiles(…)导致UnauthorizedA
- WordPress中利用AJAX异步获取评论用户头像的方法
- DWR高级主题之反向Ajax(DWR3的轮询模式演示1)
- ajax异步、同步问题,KindEditor ajax提交内容,ajax提交fo
- 对Riak Core的探索 (3) - 依赖注入 IoC
- .net – 丢失的VB6源代码;是否可以覆盖另一个对象中的方法?
- Project Perfect让Swift在服务器端跑起来-在Linux上创建你
- 创建一个临时文件,而无需在Ruby中打开它
- XML Xerces c++学习笔记--(一)
- Flex3 PieChart 例子