Redis收费版使用 一

配置文件


<configuration>
  <configSections>
      <section name="RedisConfig" type="Redis.RedisConfig,Redis"/>
  configSections>
  <connectionStrings>
    <add name="BaseDb" connectionString="Server=192.168.1.200;Initial Catalog=GG;User ID=sa;Password=123456" providerName="System.Data.SqlClient"/>
  connectionStrings>
  <startup> 
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/>
  startup>

  <RedisConfig WriteServerConStr="192.168.1.62:6379" ReadServerConStr="192.168.1.62:6379">

  RedisConfig>
configuration>

命名空间 Redis

1.配置文件读取类

 public sealed class RedisConfig : ConfigurationSection
    {
        public static RedisConfig GetConfig()
        {
            RedisConfig section = GetConfig("RedisConfig");
            return section;
        }

        public static RedisConfig GetConfig(string sectionName)
        {
            RedisConfig section = (RedisConfig)ConfigurationManager.GetSection(sectionName);
            if (section == null)
                throw new ConfigurationErrorsException("Section " + sectionName + " is not found.");
            return section;
        }
        /// 
        /// 可写的Redis链接地址
        /// 
        [ConfigurationProperty("WriteServerConStr", IsRequired = false)]
        public string WriteServerConStr
        {
            get
            {
                return (string)base["WriteServerConStr"];
            }
            set
            {
                base["WriteServerConStr"] = value;
            }
        }


        /// 
        /// 可读的Redis链接地址
        /// 
        [ConfigurationProperty("ReadServerConStr", IsRequired = false)]
        public string ReadServerConStr
        {
            get
            {
                return (string)base["ReadServerConStr"];
            }
            set
            {
                base["ReadServerConStr"] = value;
            }
        }
        /// 
        /// 最大写链接数
        /// 
        [ConfigurationProperty("MaxWritePoolSize", IsRequired = false, DefaultValue = 5)]
        public int MaxWritePoolSize
        {
            get
            {
                int _maxWritePoolSize = (int)base["MaxWritePoolSize"];
                return _maxWritePoolSize > 0 ? _maxWritePoolSize : 5;
            }
            set
            {
                base["MaxWritePoolSize"] = value;
            }
        }


        /// 
        /// 最大读链接数
        /// 
        [ConfigurationProperty("MaxReadPoolSize", IsRequired = false, DefaultValue = 5)]
        public int MaxReadPoolSize
        {
            get
            {
                int _maxReadPoolSize = (int)base["MaxReadPoolSize"];
                return _maxReadPoolSize > 0 ? _maxReadPoolSize : 5;
            }
            set
            {
                base["MaxReadPoolSize"] = value;
            }
        }


        /// 
        /// 自动重启
        /// 
        [ConfigurationProperty("AutoStart", IsRequired = false, DefaultValue = true)]
        public bool AutoStart
        {
            get
            {
                return (bool)base["AutoStart"];
            }
            set
            {
                base["AutoStart"] = value;
            }
        }



        /// 
        /// 本地缓存到期时间,单位:秒
        /// 
        [ConfigurationProperty("LocalCacheTime", IsRequired = false, DefaultValue = 36000)]
        public int LocalCacheTime
        {
            get
            {
                return (int)base["LocalCacheTime"];
            }
            set
            {
                base["LocalCacheTime"] = value;
            }
        }


        /// 
        /// 是否记录日志,该设置仅用于排查redis运行时出现的问题,如redis工作正常,请关闭该项
        /// 
        [ConfigurationProperty("RecordeLog", IsRequired = false, DefaultValue = false)]
        public bool RecordeLog
        {
            get
            {
                return (bool)base["RecordeLog"];
            }
            set
            {
                base["RecordeLog"] = value;
            }
        }

    }

2.连接对象

public class RedisManager
    {
        /// 
        /// redis配置文件信息
        /// 
        private static RedisConfig RedisConfig = RedisConfig.GetConfig();

        private static PooledRedisClientManager prcm;

        /// 
        /// 静态构造方法,初始化链接池管理对象
        /// 
        static RedisManager()
        {
            CreateManager();
        }

        /// 
        /// 创建链接池管理对象
        /// 
        private static void CreateManager()
        {
            string[] WriteServerConStr = SplitString(RedisConfig.WriteServerConStr, ",");
            string[] ReadServerConStr = SplitString(RedisConfig.ReadServerConStr, ",");
            prcm = new PooledRedisClientManager(ReadServerConStr, WriteServerConStr,
                             new RedisClientManagerConfig
                             {
                                 MaxWritePoolSize = RedisConfig.MaxWritePoolSize,
                                 MaxReadPoolSize = RedisConfig.MaxReadPoolSize,
                                 AutoStart = RedisConfig.AutoStart,
                                 DefaultDb = 0
                             });
        }

        private static string[] SplitString(string strSource, string split)
        {
            return strSource.Split(split.ToArray());
        }
        /// 
        /// 客户端缓存操作对象
        /// 
        public static IRedisClient GetClient()
        {
            if (prcm == null)
                CreateManager();
            return prcm.GetClient();
        }


    }

3.redis操作的基类

 /// 
    /// RedisBase类,是redis操作的基类,继承自IDisposable接口,主要用于释放内存
    /// 
    public abstract class RedisBase : IDisposable
    {
        public static RedisClient Core { get; private set; }
        private bool _disposed = false;
        static RedisBase()
        {
            Core = new RedisClient("127.0.0.1", 6379);//redis服务IP和端口// RedisManager.GetClient();
        }
        protected virtual void Dispose(bool disposing)
        {
            if (!this._disposed)
            {
                if (disposing)
                {
                    Core.Dispose();
                    Core = null;
                }
            }
            this._disposed = true;
        }
        public void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this);
        }
        /// 
        /// 保存数据DB文件到硬盘
        /// 
        public void Save()
        {
            Core.Save();
        }
        /// 
        /// 异步保存数据DB文件到硬盘
        /// 
        public void SaveAsync()
        {
            Core.SaveAsync();
        }
    }

你可能感兴趣的:(Redis)