Exemplo n.º 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);
 }
Exemplo n.º 3
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,
         KeyPrefix = config.KeyPrefix
     });
     service.AddSingleton(config.PartitionPolicy != null
         ? new RedisClient(config.Connections.Select(ConnectionStringBuilder.Parse).ToArray(), config.PartitionPolicy)
         : new RedisClient(config.Connections.Select(ConnectionStringBuilder.Parse).ToArray(), null));
     service.AddSingleton <ICacheProvider, RedisCacheProvider>();
     service.AddSingleton <IDataSerializer, DataSerializer>();
     return(service);
 }
Exemplo n.º 4
0
 public static ContainerBuilder AddDapperCachingInPartitionRedis <TCacheKeyBuilder>(this ContainerBuilder 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.RegisterType <TCacheKeyBuilder>().As <ICacheKeyBuilder>().SingleInstance();
     service.RegisterInstance(new CacheConfiguration
     {
         AllMethodsEnableCache = config.AllMethodsEnableCache,
         Expire    = config.Expire,
         KeyPrefix = config.KeyPrefix
     }).SingleInstance();
     service.RegisterInstance(config.PartitionPolicy != null
         ? new RedisClient(config.Connections.Select(ConnectionStringBuilder.Parse).ToArray(), config.PartitionPolicy)
         : new RedisClient(config.Connections.Select(ConnectionStringBuilder.Parse).ToArray(), null)).SingleInstance();
     service.RegisterType <RedisCacheProvider>().As <ICacheProvider>().SingleInstance();
     service.RegisterType <DataSerializer>().As <IDataSerializer>().SingleInstance();
     return(service);
 }