Redis Config

1 篇文章 0 订阅

复制代码
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
{
///
/// redis配置文件信息
///
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();
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RedisConfig 是一个用于配置 Redis 相关的类。下面是一个示例的 RedisConfig 类的实现,用于配置 RedisTemplate: ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; @Configuration public class RedisConfig { @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory); // 设置 key 的序列化器为 StringRedisSerializer redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setHashKeySerializer(new StringRedisSerializer()); // 设置 value 的序列化器为 GenericJackson2JsonRedisSerializer redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer()); return redisTemplate; } } ``` 在上述代码中,我们通过 `@Configuration` 注解将该类标记为配置类,然后使用 `@Bean` 注解将 `RedisTemplate` 对象注入到 Spring 容器中。 在 `redisTemplate` 方法中,我们首先创建了一个 `RedisTemplate` 对象,并设置了连接工厂(`redisConnectionFactory`)。接下来,我们设置了键(key)的序列化器为 `StringRedisSerializer`,这样可以保证键以字符串形式存储在 Redis 中。同时,我们设置了值(value)的序列化器为 `GenericJackson2JsonRedisSerializer`,这样可以将对象以 JSON 格式存储在 Redis 中。 根据你的实际需求,你可以进一步配置 Redis 的其他属性,例如连接池配置、缓存过期时间等。这里只是一个简单的示例来展示如何配置 RedisTemplate。 确保将上述代码放置在正确的包路径下,并在 Spring Boot 的启动类上使用 `@Import(RedisConfig.class)` 注解来导入 RedisConfig 配置类。这样就可以在项目中使用 `redisTemplate` 对象来操作 Redis 数据库了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值