• 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();
            }
    
        }
  • 相关阅读:
    Atitti  css   transition Animation differ区别
    Atitit 游戏引擎物理系统(1)爆炸效果
    Atitit.rsa密钥生成器的attilax总结
    新特性AAtitti css3 新特性attilax总结titti css
    Atitit 异常的实现原理 与用户业务异常
    Atitit.uke 团队建设的组织与运营之道attilax总结
    atitit 业务 触发器原理. 与事件原理 docx
    Atitit 基于dom的游戏引擎
    Atitit 团队建设的知识管理
    Javascript判断页面刷新或关闭的方法(转)
  • 原文地址:https://www.cnblogs.com/CoreXin/p/4766459.html
Copyright © 2020-2023  润新知