首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Boot Cache中的Caffeine Cache :获取所有缓存的键

Spring Boot Cache中的Caffeine Cache :获取所有缓存的键
EN

Stack Overflow用户
提问于 2020-01-28 13:10:11
回答 2查看 6.7K关注 0票数 3

我正在为Spring Cache使用咖啡因缓存库。有没有一种方法可以获得所有缓存的键?

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-28 14:38:39

Yo可以注入CacheManager并从中获取原生缓存。

代码语言:javascript
复制
@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();
  }

}

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

票数 9
EN

Stack Overflow用户

发布于 2021-07-31 20:22:56

您可以使用asMap().keySet()方法返回键集,如下所示。

代码语言:javascript
复制
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();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59942462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档