我正在将Caffeine Cache库用于Spring Cache。有没有办法获取所有缓存的密钥?
我当前的应用程序处理接近实时的数据,流程为:
在Cache Updater Thread
(以固定间隔运行,与用户请求无关),我需要获取缓存中当前的所有键,从Db中获取其最新数据,然后使用@CachePut
更新缓存。
您可以注入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();
}
}
当然,您应该添加一些类转换检查。