Beispiel #1
0
 public static IServiceCollection AddDapperCachingInPartitionRedis <TCacheKeyBuilder>(this IServiceCollection service, PartitionRedisConfiguration config) where TCacheKeyBuilder : ICacheKeyBuilder
 {
     if (config == null)
     {
         throw new ArgumentNullException(nameof(config));
     }
     if (config.Connections.Count() < 2)
     {
         throw new ArgumentException("Need at least 2 redis nodes.", nameof(config.Connections));
     }
     service.AddSingleton(typeof(ICacheKeyBuilder), typeof(TCacheKeyBuilder));
     service.AddSingleton(new CacheConfiguration
     {
         AllMethodsEnableCache = config.AllMethodsEnableCache,
         Expire = config.Expire
     });
     RedisHelper.Initialization(config.PartitionPolicy != null
         ? new CSRedisClient(key => config.PartitionPolicy(key, config.Connections.ToArray()),
                             config.Connections.ToArray())
         : new CSRedisClient(null, config.Connections.ToArray()));
     service.AddSingleton <IDistributedCache>(new CSRedisCache(RedisHelper.Instance));
     service.AddSingleton <ICacheProvider, PartitionRedisCacheProvider>();
     service.AddSingleton <IDataSerializer, DataSerializer>();
     return(service);
 }
 public static ContainerBuilder AddDapperCachingInPartitionRedis(this ContainerBuilder service, PartitionRedisConfiguration config)
 {
     if (config == null)
     {
         throw new ArgumentNullException(nameof(config));
     }
     if (config.Connections.Count() < 2)
     {
         throw new ArgumentException("Need at least 2 redis nodes.", nameof(config.Connections));
     }
     service.RegisterType <DefaultCacheKeyBuilder>().As <ICacheKeyBuilder>().SingleInstance();
     service.RegisterInstance(new CacheConfiguration
     {
         AllMethodsEnableCache = config.AllMethodsEnableCache,
         Expire = config.Expire
     }).SingleInstance();
     RedisHelper.Initialization(config.PartitionPolicy != null
         ? new CSRedisClient(key => config.PartitionPolicy(key, config.Connections.ToArray()),
                             config.Connections.ToArray())
         : new CSRedisClient(null, config.Connections.ToArray()));
     service.RegisterInstance(new CSRedisCache(RedisHelper.Instance)).As <IDistributedCache>().SingleInstance();
     service.RegisterType <PartitionRedisCacheProvider>().As <ICacheProvider>().SingleInstance();
     service.RegisterType <DataSerializer>().As <IDataSerializer>().SingleInstance();
     return(service);
 }