porta implement example cache c# azure azure-redis-cache

c# - implement - No fue posible conectarse a los servidores redis; para crear un multiplexor desconectado



redis cache example (4)

Tengo la siguiente pieza de código para conectarme a la memoria caché de redis azul.

public class CacheConnectionHelper { private static Lazy<ConnectionMultiplexer> lazyConnection = new Lazy<ConnectionMultiplexer>(() => { return ConnectionMultiplexer.Connect(SettingsHelper.AzureRedisCache); }); public static ConnectionMultiplexer Connection { get { return lazyConnection.Value; } } }

Y lo uso de esta manera

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; } }

Sin embargo, 1 o 2 veces por día obtengo esta excepción:

Additional information: It was not possible to connect to the redis server(s); to create a disconnected multiplexer, disable AbortOnConnectFail. UnableToResolvePhysicalConnection on PING

La pregunta es ¿cómo puedo refactorizar este código para ir a la base de datos en caso de que falle la conexión de caché?


El error que está recibiendo suele ser una señal de que no ha configurado abortConnect = false en su cadena de conexión. El valor predeterminado para abortConnect es verdadero , lo que hace que StackExchange.Redis no se vuelva a conectar al servidor automáticamente bajo ciertas condiciones. Le recomendamos encarecidamente que configure abortConnect = false en su cadena de conexión para que SE.Redis se reconecte automáticamente en el fondo si se produce un error de red.


También debe prestar atención a la última parte de su mensaje de error, ya que parece proporcionar detalles muy útiles sobre la razón por la cual la conexión ha fallado.

En tu caso:

No fue posible conectarse a los servidores redis; para crear un multiplexor desconectado, deshabilite AbortOnConnectFail. UnableToResolvePhysicalConnection en PING

Mi caso:

No fue posible conectarse a los servidores redis; para crear un multiplexor desconectado, deshabilite AbortOnConnectFail. Se acabó el tiempo


para los principiantes que bucean en el código de otros y enfrentan este problema:

if (RedisConn == null) { ConfigurationOptions option = new ConfigurationOptions { AbortOnConnectFail = false, EndPoints = { redisEndpoint } }; RedisConn = ConnectionMultiplexer.Connect(option); }