Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

It was not possible to connect to the redis server(s); to create a disconnected multiplexer

I have the following piece of code to connect to azure redis cache.

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

And I use it this way

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

However 1 or 2 times per day I get this exception:

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

The question is how can I refactor this code to go to the database in case the cache connection fails?

like image 993
Luis Valencia Avatar asked Jun 17 '15 15:06

Luis Valencia


Video Answer


1 Answers

The error you are getting is usually a sign that you have not set abortConnect=false in your connection string. The default value for abortConnect is true, which makes it so that StackExchange.Redis won't reconnect to the server automatically under some conditions. We strongly recommend that you set abortConnect=false in your connection string so that SE.Redis will auto-reconnect in the background if a network blip occurs.

like image 176
JonCole Avatar answered Sep 19 '22 18:09

JonCole