You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot集成Caffeine缓存:控制台仅输出SQL无缓存日志问题

解决Spring Cache(Caffeine)无缓存日志输出的问题

核心问题分析

Spring Cache默认不会输出缓存操作的日志信息,同时需要确认你的缓存逻辑是否真的在正常生效。以下是具体的排查和解决步骤:


  • 开启缓存调试日志
    要看到缓存的命中、加载、更新等日志,需要手动配置日志级别。在你的application.properties中添加:

    # 开启Spring Cache核心组件的调试日志
    logging.level.org.springframework.cache=DEBUG
    # 若需要查看Caffeine缓存的内部操作细节,可额外开启
    logging.level.com.github.benmanes.caffeine.cache=DEBUG
    

    配置完成后,再次调用接口就能在控制台看到详细的缓存操作日志了。

  • 检查缓存注解与配置的一致性
    你的代码中@CacheConfig已经指定了cacheNames = {"dogsInHouse"},@Cacheable里重复指定相同缓存名虽然不影响功能,但可以简化为@Cacheable(不指定时会继承@CacheConfig的配置)。另外确认CacheManager上的@Primary注解:如果系统中只有这一个缓存管理器,该注解可以保留;如果存在多个缓存管理器,需确保这个Caffeine的实例被优先使用。

  • 验证缓存是否实际生效
    可以在查询方法中添加日志,确认是否重复查询数据库:

    @Cacheable("dogsInHouse")
    public DogsInHouse findDogHouseEnFromDB (String key) {
        log.info("开始从数据库查询数据,key: {}", key);
        return dogsEnRepository.findByNameAndLangIs(key);
    }
    

    重复调用相同key的接口时,如果只打印一次上述日志,说明缓存已生效;如果每次调用都打印,需要排查:

    • 每次调用的key参数是否完全一致?缓存的默认key是方法参数的哈希值,参数不同会生成不同的缓存项。
    • DogsInHouse实体类是否实现了Serializable接口?虽然Caffeine默认是堆内缓存不需要序列化,但如果后续有缓存序列化相关的配置,这个会影响缓存的存储。

内容的提问来源于stack exchange,提问作者Nunyet Calçada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 10:25:21