Beispiel #1
0
        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();
            }
        }