private static ConfigurationOptions GetConnectionString(RedisNodes redisNode) { ConfigurationOptions configurationOptions; switch (redisNode) { case RedisNodes.AccessTokenNode: configurationOptions = ConfigurationOptions.Parse(ApplicationSettings.AccessTokenRedisHostName); break; case RedisNodes.RefreshTokenNode: configurationOptions = ConfigurationOptions.Parse(ApplicationSettings.RefreshTokenRedisHostName); break; case RedisNodes.ValidRefreshTokenNode: configurationOptions = ConfigurationOptions.Parse(ApplicationSettings.ValidRefreshTokenRedisHostName); break; default: throw new InvalidEnumArgumentException(nameof(redisNode), (int)redisNode, typeof(RedisNodes)); } configurationOptions.AbortOnConnectFail = false; return(configurationOptions); }
protected static IDatabase GetRedisDatabase(RedisNodes redisNode) { if (!NodeConnections.TryGetValue(redisNode, out var redis) || redis != null && !redis.IsConnected) { lock (syncLock) { if (!NodeConnections.TryGetValue(redisNode, out redis) || redis != null && !redis.IsConnected) { if (redis != null) { NodeConnections.Remove(redisNode); redis.Close(); } var connectionString = GetConnectionString(redisNode); var redisConnection = ConnectionMultiplexer.Connect(connectionString); NodeConnections.Add(redisNode, redisConnection); redis = redisConnection; } } } return(redis?.GetDatabase((int)redisNode)); }