C# 项目中使用 ServiceStack.Redis 操作 Redis

Redis 官网上可以找到很多针对 C# 的类库支持,这里我们选择了 ServiceStack.Redis 这个客户端,但是 ServiceStack.Redis 有个连接数限制,需要修改源码,另外一个用的比较多的是 StackExchange.Redis,这里不做介绍。

RedisConfiguration 类:

    /// <summary>
    /// 表示配置文件中的 Redis 配置节。
    /// </summary>
    public sealed class RedisConfiguration : ConfigurationSection
    {
        /// <summary>
        /// 检索当前应用程序默认配置的 Redis 配置节。
        /// </summary>
        /// <returns>指定的 Redis 配置节对象,或者,如果该节不存在,则为 null。</returns>
        public static RedisConfiguration GetConfig()
        {
            RedisConfiguration section = (RedisConfiguration)ConfigurationManager.GetSection("RedisConfig");
            return section;
        }

        /// <summary>
        /// 检索当前应用程序默认配置的 Redis 配置节。
        /// </summary>
        /// <param name="sectionName">配置节的路径和名称。</param>
        /// <returns>指定的 Redis 配置节对象,或者,如果该节不存在,则为 null。</returns>
        public static RedisConfiguration GetConfig(string sectionName)
        {
            RedisConfiguration section = (RedisConfiguration)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 WriteServerHosts
        {
            get
            {
                return (string)base["WriteServerList"];
            }
            set
            {
                base["WriteServerList"] = value;
            }
        }

        /// <summary>
        /// 获取或设置用于读取的 Redis 服务器的主机地址。
        /// </summary>
        [ConfigurationProperty("ReadServerList", IsRequired = false)]
        public string ReadServerHosts
        {
            get
            {
                return (string)base["ReadServerList"];
            }
            set
            {
                base["ReadServerList"] = value;
            }
        }

        /// <summary>
        /// 获取或设置 Redis Sentinel 服务器的主机地址。
        /// </summary>
        [ConfigurationProperty("SentinelServerList", IsRequired = false)]
        public string SentinelServerHosts
        {
            get
            {
                return (string)base["SentinelServerList"];
            }
            set
            {
                base["SentinelServerList"] = value;
            }
        }

        /// <summary>
        /// 获取或设置 Redis Sentinel 服务器的密码。
        /// </summary>
        [ConfigurationProperty("SentinelPassword", IsRequired = false)]
        public string SentinelPassword
        {
            get
            {
                return (string)base["SentinelPassword"];
            }
            set
            {
                base["SentinelPassword"] = value;
            }
        }

        /// <summary>
        /// 获取或设置 Redis 主服务器的名称。
        /// </summary>
        [ConfigurationProperty("MasterName", IsRequired = false)]
        public string MasterName
        {
            get
            {
                string masterName = (string)base["MasterName"];
                return String.IsNullOrEmpty(masterName) ? "master" : masterName;
            }
            set
            {
                base["MasterName"] = value;
            }
        }

        /// <summary>
        /// 获取或设置 Sentinel 的默认数据库。
        /// </summary>
        [ConfigurationProperty("SentinelDb", IsRequired = false, DefaultValue = 0)]
        public int SentinelDb
        {
            get
            {
                int sentinelDb = (int)base["SentinelDb"];
                return sentinelDb >= 0 ? sentinelDb : 0;
            }
            set
            {
                base["SentinelDb"] = 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("CacheExpires", IsRequired = false, DefaultValue = 36000)]
        public int CacheExpires
        {
            get
            {
                return (int)base["CacheExpires"];
            }
            set
            {
                base["CacheExpires"] = value;
            }
        }


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

    }

RedisKeys 类定义全局 Key:

    /// <summary>
    /// 全局 Key 定义。
    /// </summary>
    public static class RedisKeys
    {

        #region 广告相关...

        /// <summary>
        /// 指定城市唯一编号指定唯一广告编号的信息实体对象,{0}:指定城市唯一编号,{1}:指定广告编码。
        /// </summary>
        public static readonly string ADVERTISEMENTSEAT_CITY_BAIDUADID = "AdvertisementSeat_City_{0}_BaiDuAdId_{1}";
        /// <summary>
        /// 指定城市唯一编号指定广告投放目标的信息实体对象,{0}:指定城市唯一编号,{1}:指定广告投放目标。
        /// </summary>
        public static readonly string ADVERTISEMENTSEAT_CITY_BAIDUADID_TARGET = "AdvertisementSeat_City_{0}_Target_{1}";
        /// <summary>
        /// 指定城市唯一编号指定唯一广告编号的信息实体对象,{0}:指定城市唯一编号,{1}:指定产品类型编码。
        /// </summary>
        public static readonly string ADVERTISEMENTSEAT_CITY_CONDITION = "AdvertisementSeat_City_{0}_Condition_{1}";

        #endregion

    }

RedisConnectType 类定义 Redis 建立连接的方式,连接池模式,及时连接及时释放模式:

    /// <summary>
    /// 定义 Redis 建立连接的方式,连接池模式,及时连接及时释放模式。
    /// </summary>
    public enum RedisConnectType
    {
        /// <summary>
        /// 连接池链接方式。
        /// </summary>
        PooledRedisClient,
        /// <summary>
        /// 短连接方式,用完就释放的模式。
        /// </summary>
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值