我有以下代码可以连接到 azure redis 缓存。
public class CacheConnectionHelper
{
private static Lazy<ConnectionMultiplexer> lazyConnection = new Lazy<ConnectionMultiplexer>(() =>
{
return ConnectionMultiplexer.Connect(SettingsHelper.AzureRedisCache);
});
public static ConnectionMultiplexer Connection
{
get
{
return lazyConnection.Value;
}
}
}
我用这种方式
public static List<Models.Module> GetModules()
{
IDatabase cache = CacheConnectionHelper.Connection.GetDatabase();
List<Models.Module> listOfModules = new List<Models.Module>();
listOfModules = (List<Models.Module>)cache.Get("ApplicationModules");
if (listOfModules == null)
{
listOfModules = dbApp.Modulos.ToList();
cache.Set("ApplicationModules", listOfModules, TimeSpan.FromMinutes(SettingsHelper.CacheModuleNames));
return listOfModules;
}
else {
return listOfModules;
}
}
但是每天有 1 或 2 次我得到这个例外:
附加信息:无法连接到 redis 服务器;要创建断开连接的多路复用器,请禁用 AbortOnConnectFail。PING 上的 UnableToResolvePhysicalConnection
问题是如果缓存连接失败,我如何重构此代码以访问数据库?