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

如何获取并查看Java Spring Cache中的全部缓存数据

查看Spring Cache(Caffeine实现)全部缓存数据的方案

Spring Cache的顶层Cache接口并未提供直接获取所有缓存条目的方法,但Caffeine作为具体实现,支持通过底层实例访问全部缓存数据,具体实现步骤如下:

实现步骤

  • 先将Spring Cache返回的Cache实例强转为CaffeineCache(需先判断类型避免转换异常)
  • 通过CaffeineCache的getNativeCache()方法获取底层的Caffeine原生缓存实例
  • 调用原生缓存的asMap()方法获取缓存的实时视图,进而遍历所有键值对

代码示例

在你的CacheFilter中可以这样实现:

@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
    Cache cache = cacheManager.getCache("hr");
    if (cache instanceof CaffeineCache caffeineCache) {
        // 获取Caffeine原生缓存实例
        com.github.benmanes.caffeine.cache.Cache<Object, Object> nativeCaffeineCache = caffeineCache.getNativeCache();
        // 遍历所有缓存条目
        nativeCaffeineCache.asMap().forEach((cacheKey, cacheValue) -> {
            // 根据需求处理缓存数据,比如打印日志、收集到集合中
            System.out.println("缓存键:" + cacheKey + ",缓存值:" + cacheValue);
        });
    }
    // 继续执行网关过滤链逻辑
    return chain.filter(exchange);
}

注意事项

  • asMap()返回的是缓存的实时视图,会同步反映缓存的新增、过期或删除操作
  • 若缓存条目数量极大,遍历操作可能影响系统性能,建议仅在调试、监控场景使用
  • 确保项目已正确引入Caffeine依赖,否则无法识别CaffeineCache及原生缓存类

内容的提问来源于stack exchange,提问作者Renzo Redoran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:55:19