美文网首页
springboot2.x 的 RedisCacheManage

springboot2.x 的 RedisCacheManage

作者: LAMYMAY | 来源:发表于2019-03-19 17:02 被阅读0次

    看图,注释掉的是1.X版本中的写法。第二种是2.X中的写法


    cache.PNG

    配置自定义的key

    1. 新建配置类 并继承 CachingConfigurerSupport
    2. 复写并注入 KeyGenerator
    3. 注入CacheManager

    与使用时候再类上或者方法上指定用哪个CacheManager 和KeyGenerator
    举例地址github

    有三个例子,注释也比较详细。

    注意:springboot2.x版本中
    配置CacheManager ,注意在2.0中可以用容器自动装配的RedisCacheManager,我们定义(过期)规则,绑定上去即可

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

    //自定义Key
    @Bean
    @Override
    public KeyGenerator keyGenerator() {
    //内部类
    return new KeyGenerator() {
    @Override
    public Object generate(Object target, Method method, Object... params) {
    StringBuilder sb = new StringBuilder();
    //注入的项目名称做为key的一部分【项目名称:全限定类名:方法名称:全部参数】
    sb.append(application).append(":").append(target.getClass().getSimpleName()).append(":").append(method.getName());
    if (params != null && params.length > 0) {
    for (Object p : params) {
    sb.append("@").append(p);
    }
    }
    return sb.toString();
    }
    };
    }

    相关文章

      网友评论

          本文标题:springboot2.x 的 RedisCacheManage

          本文链接:https://www.haomeiwen.com/subject/xlrnmqtx.html