spring boot + redis 配置

这篇博客详细介绍了如何在Spring Boot项目中配置并使用Redis,包括引入依赖、配置文件设置、Redis配置类的编写,特别强调了Spring Boot 1.x与2.x版本之间的差异。还提供了一个专门的Redis封装工具类,主要使用了StringRedisTemplate,并对比分析了StringRedisTemplate和RedisTemplate的区别,包括序列化方式的不同。
摘要由CSDN通过智能技术生成

1.引入reids包

spring-boot-starter-redis(springboot版本1.4版本前),spring-boot-starter-data-redis(1.4版本后)

选择合适的API:

这个主要是根据redis存储的数据类型需求决定,key一般都是String,但是value可能不一样,一般有两种,String和 Object; 
如果k-v都是String类型,我们可以直接用 StringRedisTemplate,这个是官方建议的,也是最方便的,直接导入即用,无需多余配置! 
如果k-v是Object类型,则需要自定义 RedisTemplate,在这里我们都研究下!

2.配置文件application.yml中redis的配置信息

redis:
  host: 127.0.0.1
  port: 6379
  #连接超时时间(毫秒)
  timeout: 2000
  pool:
    #最大连接数(负数表示没有限制)
    max-active: 100
    #最大空闲连接
    max-idle: 10
    #最大阻塞等待时间(负数表示没有限制)
    max-wait: 100000   
  database: 0

3.Redis配置类(注意这里使用spring boot 1.x版本如果2.x版本缓存管理器写法不一样,不再使用RedisTemplate构造,而是使用了RedisConnectionFactory)

@Configuration
@EnableCaching //配置cache Manager
//继承CachingConfigurerSupport类是为了自定义redis key的生成策略(复写keyGenerator方法)
public class RedisConfig extends CachingConfigurerSupport{
	 //从配置文件中读取配置信息
	@Value("${redis.timeout}")
    private Long redisTimeout;
	
	/*生成key的策略 根据类名+方法名+所有参数的值生成唯一的一个key **/
	@Bean
	@Override
	public KeyGenerator keyGenerator() {
		return new KeyGenerator() {
            public Object generate(Object target, Method method, Object... params) {
                StringBuilder sb = new StringBuilder();
                sb.append(target.getClass().getName());
                sb.append(method.getName());
                for (Object obj : params) {
                    sb.append(obj.toString());
                }
                return sb.toString();
            }
        };
	}
	
	/**
     * 管理缓存
     * @param redisTemplate
     * @return
     */
	@Bean
	  public CacheManager cacheManager(RedisTemplate<?,?> redisTemplate) { 
		RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
		//设置redis缓存过期时间
	   cacheManager.setDefaultExpiration(redisTimeout);
	   return cacheManager; 
	  } 
	
	/**
     * RedisTemplate配置
     * jdk序列方式,用来保存对象(key=对象)
     * @param factory
     * @return
    */
	  /*@Bean
	  public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { 
	   
	   StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
	   //自定义的redis序列化工具类(对object序列化)
       RedisObjectSerializer redisObjectSerializer = new RedisObjectSerializer();

       RedisTemplate<String, Object> template = new Red
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值