Spring 引导缓存中的咖啡因缓存:获取所有缓存的密钥
Caffeine Cache in Spring Boot Cache : Get all cached keys
我正在为 Spring 缓存使用 Caffeine 缓存库。有没有办法获取所有缓存的密钥?
我当前的应用程序处理近乎实时的数据,流程如下:
在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();
}
}
当然你应该添加一些 class 转换检查。
您可以 return 使用 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();
}
我正在为 Spring 缓存使用 Caffeine 缓存库。有没有办法获取所有缓存的密钥?
我当前的应用程序处理近乎实时的数据,流程如下:
在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();
}
}
当然你应该添加一些 class 转换检查。
您可以 return 使用 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();
}