guava cache很适合做进程内的缓存,本文先学习下它的缓存统计功能,需要使用recordStats()打开缓存统计功能。
// 创建1块缓存,key和value都是integer类型,最大缓存个数是5,开启缓存统计功能
// 使用LoadingCache,如果数据不存在就使用CacheLoader加载数据
LoadingCache cache = CacheBuilder.newBuilder().recordStats().maximumSize(5).
build(new CacheLoader<Integer, Integer>() {
@Override
public Integer load(Integer id) throws Exception {
System.out.println("mock query db....");
if (id % 2 == 0) {
Thread.sleep(100);
throw new RuntimeException();
} else {
Thread.sleep(200);
return id * 10;
}
}
});
<