public static CacheManager CreateFromConfig(CachingConfig cfg) { var services = new List <ICacheService>(); if (cfg.IsCacheEnabled) { foreach (var providerCfg in cfg.ProviderConfigs) { if (providerCfg is RedisConfig) { if (providerCfg.IsCacheEnabled) { services.Add(CacheServiceFactory.GetRedisCacheService(providerCfg as RedisConfig)); } } if (providerCfg is InMemoryConfig) { if (providerCfg.IsCacheEnabled) { services.Add(CacheServiceFactory.GetInMemoryCacheService(providerCfg)); } } } } else { services.Add(CacheServiceFactory.GetDefaultEmptyCacheService()); } var serviceManager = ServiceManager.Register(services); return(new CacheManager(serviceManager)); }
public ICacheService GetCurrentCacheService() { var activeService = _services.FirstOrDefault(s => s.IsActive); var primaryService = _services.FirstOrDefault(s => s.Priority == CacheServicePriority.Primary); return(primaryService); //foreach (var service in _services.Where(s => s.Priority == CacheServicePriority.Secondary).OrderBy(s => s.IsActive)) //{ // if (service.IsAvailable) // { // if (!service.IsActive) // { // //CachingLogger.Log.SwitchingCachingProvider($"from {activeService.Name} to {service.Name}"); // service.IsActive = true; // } // return service; // } //} //CachingLogger.Log.SwitchingCachingProviderFailed(activeService.Name); return(CacheServiceFactory.GetDefaultEmptyCacheService()); }