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

问题描述 投票:0回答:1

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

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

enter image description here

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

java spring-boot caching spring-cache caffeine-cache
1个回答
0
投票

您可以注入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();
  }

}

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

© www.soinside.com 2019 - 2024. All rights reserved.