У меня есть следующий фрагмент кода для подключения к кешу 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. UnableToResolvePhysicalConnection при PING
Вопрос в том, как я могу реорганизовать этот код для перехода к базе данных в случае сбоя подключения к кешу?