private static void InitCacheManager(IWindsorContainer container, IConfigResolver localConfigResolver) { if (localConfigResolver.CacheManagerConfig().Items.Count == 0) { return; } localConfigResolver.CacheManagerConfig().Items.ForEach(m => { Action <ConfigurationBuilderCachePart> settings; var redisConfigName = $"{m.RedisConfigName}_connection"; if (!IocManager.Instance.IsRegistered(redisConfigName)) { return; } var redisConnectionWrapper = IocManager.Instance.Resolve <IRedisConnectionWrapper>(redisConfigName); switch (m.CacheModel) { case EumCacheModel.Redis: { settings = (o) => o.WithRedisConfiguration("redis", redisConnectionWrapper.Database().Multiplexer).WithMaxRetries(100).WithRetryTimeout(50).WithRedisBackplane("redis").WithRedisCacheHandle("redis", true); break; } case EumCacheModel.RuntimeRedis: { settings = (o) => o.WithMemoryCacheHandle("handleName").And.WithRedisConfiguration("redis", redisConnectionWrapper.Database().Multiplexer).WithMaxRetries(100).WithRetryTimeout(50).WithRedisBackplane("redis").WithRedisCacheHandle("redis", true); break; } default: return; } // 注册 container.Register(Component.For <ICacheManager>().Named(m.Name).ImplementedBy <Cache.CacheManager>().DependsOn(Dependency.OnValue(settings.GetType(), settings)).LifestyleSingleton()); }); }
private void InitConfig(IConfigResolver configResolver) { var config = configResolver.CacheManagerConfig(); if (config == null || config.Items.Count == 0) { configResolver.Set(new CacheManagerConfig { Items = new List <CacheManagerItemConfig> { new CacheManagerItemConfig { Name = "test", RedisConfigName = "", CacheModel = EumCacheModel.Runtime } } }); configResolver.Save(); } }