• springboot2.x 的 RedisCacheManager变化


    springboot2.x 的 RedisCacheManager变化

    springboot2.x 的 RedisCacheManager变化

    由于最近在学着使用redis做缓存,使用的是springboot2.x来搭建的项目。 
    看了看网上的一些教程,但是大多数教程都是基于1.x的版本来讲解的,但是springboot2.x之后发生了一些变动,网上想找一些资料不太容易。

    springboot配置缓存过期时间,网上大部分资料是使用ReidsCacheManager来进行自定义的配置 
    以下是大部分网上的代码(这也是基于springboot1.x的版本可以使用的)

    @Bean
    public CacheManager cacheManager(RedisTemplate redisTemplate) {
        RedisCacheManager cacheManager= new RedisCacheManager(redisTemplate);
        cacheManager.setDefaultExpiration(60);
        Map<String,Long> expiresMap=new HashMap<>();
        expiresMap.put("Product",5L);
        cacheManager.setExpires(expiresMap);
        return cacheManager;
    }

    然而在springboot2.x中,RedisCacheManager已经没有了单参数的构造方法 
    以下是springboot2.x版本下 RedisCacheManager的大部分方法 
    这里写图片描述

    可以发现原来1.x版本的构造方法已经没有了,新的构造方法如图所示。 
    本人没有看1.x的源码,我发现这里有一个RedisCacheManagerBuilder的内部类,从名字就不难发现这是一个用来构造RedisCacheManager的建造模式的应用吧。 
    所以以下是本人使用的RedisCacheManager的构造方法(如果定制化要求的话可以修改其中的配置就可以),这里我只设置了缓存失效时间为一小时,如需其他配置可以到RedisCacheConfiguration这个类中去寻找一下。

         @Bean
        public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
            RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
                    .entryTtl(Duration.ofHours(1)); // 设置缓存有效期一小时
            return RedisCacheManager
                    .builder(RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory))
                    .cacheDefaults(redisCacheConfiguration).build();
        }

    之前的代码是这样的
    @Bean
    public CacheManager cacheManager(RedisTemplate redisTemplate) {
    RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);

    RedisCachePrefix cachePrefix = new RedisCachePrefix() {
    @Override
    public byte[] prefix(String s) {
    return new StringRedisSerializer().serialize("XXX:".concat(s));
    }
    };
    cacheManager.setUsePrefix(true);
    cacheManager.setCachePrefix(cachePrefix);
    cacheManager.setDefaultExpiration(30 * 60);
    return cacheManager;
    }
     
  • 相关阅读:
    【java】对象赋值给另一个对象
    spring boot系列(五)spring boot 配置spring data jpa (查询方法)
    Spring Data JPA 查询
    Spring Data JPA 介绍
    OpenID简介
    OAUTH协议介绍
    URL encoding(URL编码)
    RESTful 介绍
    spring boot系列(四)spring boot 配置spring data jpa (保存修改删除方法)
    spring boot 启动报 java.lang.NoClassDefFoundError: ch/qos/logback/core/spi/LifeCycle 错误
  • 原文地址:https://www.cnblogs.com/longxok/p/10833902.html
Copyright © 2020-2023  润新知