我正在为Spring Cache使用咖啡因缓存库。有没有一种方法可以获得所有缓存的键?
我当前的应用程序处理的是近乎实时的数据,流程如下:

在Cache Updater Thread(以固定时间间隔运行,与用户请求无关)中,我需要获取缓存中当前的所有键,从Db获取它们的最新数据,然后使用@CachePut更新缓存。
发布于 2020-01-28 14:38:39
Yo可以注入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();
}
}当然,您应该添加一些类类型转换检查。
发布于 2021-07-31 20:22:56
您可以使用asMap().keySet()方法返回键集,如下所示。
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
class Test{
private Cache<String,String> testCache;
Test(){
testCache = Caffeine.newBuilder().expireAfterWrite( 3000, TimeUnit.SECONDS).build();
}
// return keys as a set
public Set<String> getCacheKeySet(){
return testCache.asMap().keySet();
}https://stackoverflow.com/questions/59942462
复制相似问题