在使用Spring Cache进行数存储时,一般使用key获取value,但有时需要获取所有cache进行操作,这里使用到了Cache.getNativeCache,但是无法直接使用。
使用方法
public void getCacheTest(){
Cache cache = caffeineCacheManager.getCache("lizz-test-cache");
// cache转map
Map cacheMap = cacheToMap(Cache);
for(Map.Entry entry : cacheMap.entrySet()){
String key = entry.getKey();
Object object = entry.getValue();
}
}
public static Map cacheToMap(Cache cache) {
Object obj = cache.getNativeCache();
Map map = new HashMap<>();
Field[] fields = obj.getClass().getDeclaredFields();
try {
for (Field field : fields) {
field.setAccessible(true);
map.put(field.getName(), field.get(obj));
}
} catch (Exception e) {
log.error("ObjToMap exp", e);
return null;
}
// 获取Cache.map中的cache
return (Map) map.get("cache");
}
Cache中的缓存数据key



