• spring boot simple类型cache使用


    注意:这里用的不是 redis 的缓存,simple 的缓存默认用的是 java 的 ConcurrentHashMap, 单纯的 simple 缓存,只需要引入下面的 pom 依赖即可:spring-boot-starter-cache

    1. <dependency>
    2. <groupId>org.springframework.boot</groupId>
    3. <artifactId>spring-boot-starter-cache</artifactId>
    4. <version>2.5.3</version>
    5. </dependency>

    如果你的pom里面同时还引入了:spring-boot-starter-data-redis

    1. <dependency>
    2. <groupId>org.springframework.boot</groupId>
    3. <artifactId>spring-boot-starter-data-redis</artifactId>
    4. <version>2.5.3</version>
    5. </dependency>

    并且配置了 spring.redis 相关属性,那么请务必指定缓存类型为 simple,否则会自动使用基于 redis 的 cache,如果你又没有配置redis相关设置的话,就会报:local class incompatible: stream classdesc serialVersionUID

    1. spring:
    2. redis:
    3. lettuce:
    4. pool:
    5. min-idle=0:
    6. max-wait=-1ms:
    7. max-active=3:
    8. max-idle=3:
    9. db: ${REDIS_DB:}
    10. host: ${REDIS_HOST:}
    11. password: ${REDIS_PASSWORD:}
    12. port: ${REDIS_PORT:}
    13. # 有了上面的配置后,必须指定下面的配置,否则会自动使用基于 redis 的 cache
    14. spring:
    15. cache:
    16. type: simple

    然后直接新建一个Bean,配置如下的代码即可:

    1. @Component
    2. public class CacheTools {
    3. private static Logger log = LoggerFactory.getLogger(CacheTools.class);
    4. @Cacheable("mapData")
    5. public Map<String,String> getCacheData() {
    6. Map<String,String> cacheMap=new HashMap<>();
    7. cacheMap.put("k1","v1");
    8. cacheMap.put("k2","v2");
    9. cacheMap.put("k3","v3");
    10. log.info(" init spring boot cache, total count={} ", cacheMap.size());
    11. return cacheMap;
    12. }
    13. @CacheEvict(value = "mapData")
    14. public void clearCache(){
    15. }
    16. @CachePut(cacheNames = "mapData", key = "#key")
    17. public void updateCache(String key, String value){
    18. }
    19. }

    这样就可以了,然后在Controller里面直接调用,第一次的没有缓存的时候,会执行该段代码完成初始化,后续再调用的时候,直接就走cache了,不会在执行代码了, 同理执行缓存清空和更新也类似

  • 相关阅读:
    无涯教程-JavaScript - DEC2HEX函数
    2022.8.12-----leetcode.1282
    12.OpenWrt-OPKG包管理
    【Linux】Buffer和Cache区别和用途
    前端基础建设与架构23 npm scripts:打造一体化的构建和部署流程
    Codeforces Round #726 (Div. 2) E1. Erase and Extend (Easy Version)
    数字信号处理学习笔记(一):离散时间信号与系统
    使用OkHttp库爬取百度云视频详细步骤
    企业直播:会畅通讯、好视通、飞书见仁见智
    AC修炼计划(AtCoder Regular Contest 166)
  • 原文地址:https://blog.csdn.net/u010454030/article/details/133793159