コード例 #1
0
        /// <summary>
        /// 使用StackExchangeRedis缓存,配置注入
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="sectionPath"></param>
        /// <returns></returns>
        public static ICachingBuilder UseStackExchangeRedis(this ICachingBuilder builder, string sectionPath = "Caching:StackExchangeRedis")
        {
            //      "Caching": {
            //          "StackExchangeRedis": {
            //              "Connection": "127.0.0.1:6379,password=12345678",
            //"InstanceName": "实例:"
            //          }
            //      }
            var    option            = new  StackExchangeRedisOption();
            var    section           = builder.Configuration.GetSection(sectionPath);
            string _connectionString = section.GetSection("Connection").Value;   //连接字符串
            string _instanceName     = section.GetSection("InstanceName").Value; //实例名称

            option.DbProviderName = _instanceName;
            option.Configuration  = _connectionString;

            builder.Services.AddSingleton <IRedisDatabaseProvider>(sp =>
            {
                return(new RedisDatabaseProvider(option.DbProviderName, option.Configuration));
            });
            builder.Services.AddSingleton <ICachingProvider>(sp =>
            {
                return(new DefaultRedisCachingProvider(option.DbProviderName, sp.GetServices <IRedisDatabaseProvider>(), sp.GetService <ICachingSerializer>()));
            });
            builder.Services.AddSingleton <IRedisCachingProvider>(sp =>
            {
                return(new DefaultRedisFeatureProvider(option.DbProviderName, sp.GetServices <IRedisDatabaseProvider>(), sp.GetService <ICachingSerializer>()));
            });

            return(builder);
        }
コード例 #2
0
 /// <summary>
 /// 使用内存缓存
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="providerName"></param>
 /// <returns></returns>
 public static ICachingBuilder UseInMemory(this ICachingBuilder builder, string providerName)
 {
     builder.Services.AddSingleton <IInMemoryCaching>(sp =>
     {
         return(new InMemoryCaching(providerName));
     });
     builder.Services.AddSingleton <ICachingProvider>(sp =>
     {
         return(new DefaultInMemoryCachingProvider(providerName, sp.GetServices <IInMemoryCaching>()));
     });
     return(builder);
 }
コード例 #3
0
 /// <summary>
 /// 使用StackExchangeRedis缓存
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="redisConfiguration">redis连接字符串</param>
 /// <param name="name">提供者名称</param>
 /// <returns></returns>
 public static ICachingBuilder UseStackExchangeRedis(this ICachingBuilder builder, string redisConfiguration, string providerName)
 {
     builder.Services.AddSingleton <IRedisDatabaseProvider>(sp =>
     {
         return(new RedisDatabaseProvider(providerName, redisConfiguration));
     });
     builder.Services.AddSingleton <ICachingProvider>(sp =>
     {
         return(new DefaultRedisCachingProvider(providerName, sp.GetServices <IRedisDatabaseProvider>(), sp.GetService <ICachingSerializer>()));
     });
     return(builder);
 }
コード例 #4
0
 /// <summary>
 /// 使用StackExchangeRedis缓存
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="options"></param>
 /// <returns></returns>
 public static ICachingBuilder UseStackExchangeRedis(this ICachingBuilder builder, StackExchangeRedisOption option)
 {
     builder.Services.AddSingleton <IRedisDatabaseProvider>(sp =>
     {
         return(new RedisDatabaseProvider(option.DbProviderName, option.Configuration));
     });
     builder.Services.AddSingleton <ICachingProvider>(sp =>
     {
         return(new DefaultRedisCachingProvider(option.DbProviderName, sp.GetServices <IRedisDatabaseProvider>(), sp.GetService <ICachingSerializer>()));
     });
     builder.Services.AddSingleton <IRedisCachingProvider>(sp =>
     {
         return(new DefaultRedisFeatureProvider(option.DbProviderName, sp.GetServices <IRedisDatabaseProvider>(), sp.GetService <ICachingSerializer>()));
     });
     return(builder);
 }
コード例 #5
0
        /// <summary>
        /// 使用StackExchangeRedis缓存,配置注入
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="sectionPath"></param>
        /// <returns></returns>
        public static ICachingBuilder UseStackExchangeRedis(this ICachingBuilder builder, string sectionPath = "Caching:StackExchangeRedis")
        {
            var options = builder.Configuration.GetSection(sectionPath).Get <List <StackExchangeRedisOption> >();

            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }
            foreach (var option in options)
            {
                builder.Services.AddSingleton <IRedisDatabaseProvider>(sp =>
                {
                    return(new RedisDatabaseProvider(option.DbProviderName, option.Configuration));
                });
                builder.Services.AddSingleton <ICachingProvider>(sp =>
                {
                    return(new DefaultRedisCachingProvider(option.DbProviderName, sp.GetServices <IRedisDatabaseProvider>(), sp.GetService <ICachingSerializer>()));
                });
            }
            return(builder);
        }
コード例 #6
0
 /// <summary>
 /// 使用ProtoBuffer编解码器
 /// </summary>
 /// <param name="builder"></param>
 /// <returns></returns>
 public static ICachingBuilder UseProtoBufferCodec(this ICachingBuilder builder)
 {
     builder.Services.AddSingleton <ICachingSerializer, DefaultProtoBufferSerializer>();
     return(builder);
 }
コード例 #7
0
 /// <summary>
 /// 使用MessagePack编解码器
 /// </summary>
 /// <param name="builder"></param>
 /// <returns></returns>
 public static ICachingBuilder UseMessagePackCodec(this ICachingBuilder builder)
 {
     builder.Services.AddSingleton <ICachingSerializer, DefaultMessagePackSerializer>();
     return(builder);
 }