CacheBuilder是Guava用于创建LoadingCache、Cache实例的构建类。可以使用下面的方法来创建一个Cache实例。
LoadingCache<String, JsonObject> cacheDemo = CacheBuilder.newBuilder().concurrencyLevel(5).expireAfterAccess(30, TimeUnit.MINUTES).initialCapacity(100).maximumSize(5000)
.recordStats().removalListener(entry -> {
LOG.info("remove cache! Entry key = " + entry.getKey());
}).build(new CacheLoader<String, JsonObject>() {
@Override
public JsonObject load(String key) throws Exception {
return readEntryFromDb(key);
}
});
Guava CacheBuilder构建的缓存特性
通过CacheBuilder构建的Cache实例具有以下特性:
- 将数据写入缓存时是原子操作。
- 当缓存的数据达到最大规模时,会使用“最近最少使用(LRU)”算法来清除缓存数据。
- 每一条数据还可以基于时间回收,未使用时间超过一定时间后,数据会被回收。
- 当缓存被清除时,会发送通知告知。
- 提供访问统计功能。