c# - Il n'était pas possible de se connecter au (x) serveur (s) redis; créer un multiplexeur déconnecté




2 Answers

L'erreur que vous obtenez est généralement un signe que vous n'avez pas défini abortConnect = false dans votre chaîne de connexion. La valeur par défaut de abortConnect est true , ce qui permet à StackExchange.Redis de ne pas se reconnecter automatiquement au serveur dans certaines conditions. Nous vous recommandons fortement de définir abortConnect = false dans votre chaîne de connexion afin que SE.Redis se reconnecte automatiquement en arrière-plan en cas de problème de réseau.

J'ai le morceau de code suivant pour me connecter au cache redis azure.

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

        public static ConnectionMultiplexer Connection
        {
            get
            {
                return lazyConnection.Value;
            }
        }
    }

Et je l'utilise de cette façon

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

Cependant 1 ou 2 fois par jour je reçois cette exception:

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

La question est comment puis-je refactoriser ce code pour aller à la base de données dans le cas où la connexion de cache échoue?




pour les débutants qui plongent dans le code d'un autre face à ce problème:

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



Related

c# azure azure-redis-cache