Spring Boot Cache 中的咖啡因缓存:获取所有缓存的键

Ama*_*ngh 2 java caching spring-boot spring-cache caffeine-cache

我正在为 Spring Cache 使用 Caffeine Cache 库。有没有办法获取所有缓存的密钥?

我当前的应用程序处理近实时数据,流程如下:

在此处输入图片说明

Cache Updater Thread(以固定时间间隔运行,与用户请求无关)中,我需要获取当前缓存中的所有键,从 Db 获取它们的最新数据,然后用于@CachePut更新缓存。

小智 7

您可以注入 CacheManager 并从中获取本机缓存。

@AllArgsConstructor
class Test {
  private CacheManager cacheManager;

  Set<Object> keys(String cacheName){
    CaffeineCache caffeineCache = (CaffeineCache) cacheManager.getCache(cacheName);
    com.github.benmanes.caffeine.cache.Cache<Object, Object> nativeCache = caffeineCache.getNativeCache();
    return nativeCache.asMap().keySet();
  }

}

Run Code Online (Sandbox Code Playgroud)

当然,您应该添加一些类转换检查。