2017-06-12 39 views
0

我需要使用两个高速缓存实例来实现Michael解决方案,就像他在WhatIfRedisStopsWorkingHowDoIkeepMyAppRunning中解释的一样,但是使用web.config中的配置。CacheManger使用Redis多路复用器和Web.Config配置

最后我只有这行代码

var defaultConfig = ConfigurationBuilder.LoadConfiguration("defaultCache"); 

我不`吨找到如何访问到ConnectionMultiplexer钩我的事件或通过配置做到这一点...

是更多钞票?

回答

0

有两种方法可以通过应用程序/ web.config文件中CacheManager配置的Redis, 通过ConnectionString

<connectionStrings> 
    <add name="redisFromConnectionStrings" connectionString="127.0.0.1:6379,allowAdmin=True,connectTimeout=11,ssl=False,abortConnect=False,connectRetry=10" /> 
</connectionStrings> 

Redis configuration section

<cacheManager.Redis xmlns="http://cachemanager.michaco.net/schemas/RedisCfg.xsd"> 
<connections> 
    <connection id="redisAppConfig" allowAdmin="true" password="" ssl="false" sslHost="" connectionTimeout="11" database="3"> 
    <endpoints> 
     <endpoint host="127.0.0.1" port="6379" /> 
    </endpoints> 
    </connection> 
</connections> 
</cacheManager.Redis> 

:UPDATE: 目前还没有选项来访问CacheManager使用的连接复用器。 但是,您可以将现有的多路复用器传递给配置。

var defaultConfig = ConfigurationBuilder.LoadConfiguration("defaultCache"); 
var multiplexer = ConnectionMultiplexer.Connect(...); 

defaultConfig = defaultConfig 
      .Builder 
      .WithRedisConfiguration("redisConfig", multiplexer) 
      .Build(); 

当然,您必须自己实例化多路复用器,并且不能再使用web/app配置来配置Redis部分。你必须自己处理...

+0

这不是我的意思。我已经在web.config中配置了CacheManager和Redis。我需要的是添加IConnectionMultiplexer来捕获使用web.config配置的连接事件。 –

+0

@GerardoSeró啊,对不起,你必须自己实例化连接复用器,然后将它传递给redis的配置部分。请参阅更新 – MichaC

+0

就在您回答之前,我最终使用代码进行配置。谢谢 –