zoukankan      html  css  js  c++  java
  • 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;
    }
     
  • 相关阅读:
    Django的form表单
    Django的组件
    django组件的forms组件
    调用函数的时候参数全部变成了基名
    bash:/usr/bin/mogod/:connot execute binary:exec fotmat error
    脚本实现显示服务启动成功与否
    ./vi: line 2: mkdir: command not found
    chroot: cannot run command `/bin/bash': No such file&nbs
    脚本(复制命令及依赖库到另一个根文件系统)
    matlab安装教程
  • 原文地址:https://www.cnblogs.com/longxok/p/10833902.html
Copyright © 2011-2022 走看看