zoukankan      html  css  js  c++  java
  • Redis Config

      <configSections>    
        <section name="RedisConfig" type="RedisDemo.RedisConfigInfo, RedisDemo"/>
      </configSections>
      <RedisConfig WriteServerList="127.0.0.1:6379" ReadServerList="127.0.0.1:6379" MaxWritePoolSize="60" MaxReadPoolSize="60"
                   AutoStart="true" LocalCacheTime="180" RecordeLog="false">
      </RedisConfig>
    public sealed class RedisConfigInfo : ConfigurationSection
        {
            public static RedisConfigInfo GetConfig()
            {
                RedisConfigInfo section = (RedisConfigInfo)ConfigurationManager.GetSection("RedisConfig");
                return section;
            }
    
            public static RedisConfigInfo GetConfig(string sectionName)
            {
                RedisConfigInfo section = (RedisConfigInfo)ConfigurationManager.GetSection("RedisConfig");
                if (section == null)
                    throw new ConfigurationErrorsException("Section " + sectionName + " is not found.");
                return section;
            }
            /// <summary>
            /// 可写的Redis链接地址
            /// </summary>
            [ConfigurationProperty("WriteServerList", IsRequired = false)]
            public string WriteServerList
            {
                get
                {
                    return (string)base["WriteServerList"]; 
                }
                set
                {
                    base["WriteServerList"] = value;
                }
            }
    
            
            /// <summary>
            /// 可读的Redis链接地址
            /// </summary>
            [ConfigurationProperty("ReadServerList", IsRequired = false)]
            public string ReadServerList
            {
                get
                {
                    return (string)base["ReadServerList"]; 
                }
                set
                {
                    base["ReadServerList"] = value;
                }
            }
    
            
            /// <summary>
            /// 最大写链接数
            /// </summary>
            [ConfigurationProperty("MaxWritePoolSize", IsRequired = false, DefaultValue = 5)]
            public int MaxWritePoolSize
            {
                get
                {
                    int _maxWritePoolSize = (int)base["MaxWritePoolSize"];
                    return _maxWritePoolSize > 0 ? _maxWritePoolSize : 5;
                }
                set
                {
                    base["MaxWritePoolSize"] = value;
                }
            }
    
           
            /// <summary>
            /// 最大读链接数
            /// </summary>
            [ConfigurationProperty("MaxReadPoolSize", IsRequired = false, DefaultValue = 5)]
            public int MaxReadPoolSize
            {
                get
                {
                    int _maxReadPoolSize = (int)base["MaxReadPoolSize"];
                    return _maxReadPoolSize > 0 ? _maxReadPoolSize : 5;
                }
                set
                {
                    base["MaxReadPoolSize"] = value;
                }
            }
    
             
            /// <summary>
            /// 自动重启
            /// </summary>
            [ConfigurationProperty("AutoStart", IsRequired = false, DefaultValue = true)]
            public bool AutoStart
            {
                get
                {
                    return (bool)base["AutoStart"];
                }
                set
                {
                    base["AutoStart"] = value;
                }
            }
    
    
            
            /// <summary>
            /// 本地缓存到期时间,单位:秒
            /// </summary>
            [ConfigurationProperty("LocalCacheTime", IsRequired = false, DefaultValue = 36000)]
            public int LocalCacheTime
            {
                get
                {
                    return (int)base["LocalCacheTime"];
                }
                set
                {
                    base["LocalCacheTime"] = value;
                }
            }
    
           
            /// <summary>
            /// 是否记录日志,该设置仅用于排查redis运行时出现的问题,如redis工作正常,请关闭该项
            /// </summary>
            [ConfigurationProperty("RecordeLog", IsRequired = false, DefaultValue = false)]
            public bool RecordeLog
            {
                get
                {
                    return (bool)base["RecordeLog"];
                }
                set
                {
                    base["RecordeLog"] = value;
                }
            }        
    
        }
    public class RedisManager
        {
            /// <summary>
            /// redis配置文件信息
            /// </summary>
            private static RedisConfigInfo redisConfigInfo = RedisConfigInfo.GetConfig();
    
            private static PooledRedisClientManager prcm;
    
            /// <summary>
            /// 静态构造方法,初始化链接池管理对象
            /// </summary>
            static RedisManager()
            {
                CreateManager();
            }
    
    
            /// <summary>
            /// 创建链接池管理对象
            /// </summary>
            private static void CreateManager()
            {
                string[] writeServerList = SplitString(redisConfigInfo.WriteServerList, ",");
                string[] readServerList = SplitString(redisConfigInfo.ReadServerList, ",");
    
                prcm = new PooledRedisClientManager(readServerList, writeServerList,
                                 new RedisClientManagerConfig
                                 {
                                     MaxWritePoolSize = redisConfigInfo.MaxWritePoolSize,
                                     MaxReadPoolSize = redisConfigInfo.MaxReadPoolSize,
                                     AutoStart = redisConfigInfo.AutoStart,
                                 });
            }
    
            private static string[] SplitString(string strSource, string split)
            {
                return strSource.Split(split.ToArray());
            }
    
            /// <summary>
            /// 客户端缓存操作对象
            /// </summary>
            public static IRedisClient GetClient()
            {
                if (prcm == null)
                    CreateManager();
    
                return prcm.GetClient();
            }
    
        }
  • 相关阅读:
    用ADO方式连接Excel
    RTX51 tiny系统容易混淆的问题
    学用NHibernate(一)
    Firefox兼容性
    使用WebClient后的Response编码的问题
    学用ASP.NET2.0
    安装CS2.0 Beta2 到SQL2005+Asp.Net2.0下
    AJAXSLT 的bug修正(2)
    Asp.Net开发小技巧
    URL重写,友好的URL
  • 原文地址:https://www.cnblogs.com/CoreXin/p/4766459.html
Copyright © 2011-2022 走看看