• 【Java】java | CacheManager | redisCacheManager


    一、说明

            1、查询增加缓存,使用@Cacheable注解

            2、项目中已经用到了ehcache,现在需求是两个都用

    二、备份配置

    1、redisConfig增加代码

    1. @Bean("redisCacheManage")
    2. @Primary
    3. public CacheManager redisCacheManager(RedisConnectionFactory factory) {
    4. Map<String, RedisCacheConfiguration> configurationMap = MapUtil.newHashMap();
    5. RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
    6. .entryTtl(Duration.ofMinutes(60))
    7. .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(keySerializer()))
    8. .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(valueSerializer()))
    9. .disableCachingNullValues();
    10. return RedisCacheManager.builder(factory)
    11. .initialCacheNames(configurationMap.keySet())
    12. .withInitialCacheConfigurations(configurationMap)
    13. .cacheDefaults(config)
    14. .build();
    15. }
    16. private RedisSerializer<String> keySerializer() {
    17. return new StringRedisSerializer();
    18. }
    19. private RedisSerializer<Object> valueSerializer() {
    20. Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer =
    21. new Jackson2JsonRedisSerializer<>(Object.class);
    22. ObjectMapper objectMapper = new ObjectMapper();
    23. objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
    24. // 此项必须配置,否则如果序列化的对象里边还有对象,会报如下错误:
    25. // java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to XXX
    26. objectMapper.activateDefaultTyping(
    27. objectMapper.getPolymorphicTypeValidator(),
    28. ObjectMapper.DefaultTyping.NON_FINAL,
    29. JsonTypeInfo.As.PROPERTY);
    30. // 旧版写法:
    31. // objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
    32. jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
    33. return jackson2JsonRedisSerializer;
    34. }

    2、直接使用

    1)缓存

    @Cacheable(key ="'method_' + #tenantId + '_' + #bo.toString()", unless = "#result == null", cacheManager = "redisCacheManage", cacheNames = "api")

    说明1:cacheNames其实是个前缀,也可以理解成分组的概念;方便手动删除时,根据前缀删除

    2)示例截图

    3)redis存储结果截图

    ~~

  • 相关阅读:
    宠物医院信息展示预约小程序的效果如何
    WordPress初学者入门教程-附录一搜索引擎优化(SEO)
    抑制剂&拮抗剂等小分子化合物
    UE4 回合游戏项目 09- 添加人物属性值
    基于LSTM算法中文歌词生成
    笔记,正则表达式里的元字符
    Go的函数选项模式
    Linux初始化mysql后外网无限制访问
    【Python】pyecharts 模块 ② ( 命令行安装 pyecharts 模块 | PyCharm 安装 pyecharts 模块 )
    java基于ssm+jsp的教学视频学习网站
  • 原文地址:https://blog.csdn.net/myloverisxin/article/details/134535509