这很简单,尽管我可以看到混淆,因为他们给出的所有示例都假设您正在使用 CacheLoader 来填充缓存,如果您之前使用的是 Map,那么您就不会这样做。
所以,给出的例子是:
LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder()
.maximumSize(1000)
.expireAfterWrite(10, TimeUnit.MINUTES)
.removalListener(MY_LISTENER)
.build(
new CacheLoader<Key, Graph>() {
public Graph load(Key key) throws AnyException {
return createExpensiveGraph(key);
}
});
您是直接插入地图,而不是使用加载器,因此请移除加载部分:
Cache<Key, Graph> graphs = CacheBuilder.newBuilder()
.maximumSize(1000)
.expireAfterWrite(10, TimeUnit.MINUTES)
.removalListener(MY_LISTENER)
.build();
删除项目时不需要通知?
Cache<Key, Graph> graphs = CacheBuilder.newBuilder()
.maximumSize(1000)
.expireAfterWrite(10, TimeUnit.MINUTES)
.build();
不想要一个固定大小的缓存,并且只想按时限制它?
Cache<Key, Graph> graphs = CacheBuilder.newBuilder()
.expireAfterWrite(10, TimeUnit.MINUTES)
.build();
你说你想要 2 小时,而你的版本是 String,String,所以...
Cache<String, String> graphs = CacheBuilder.newBuilder()
.expireAfterWrite(2, TimeUnit.HOURS)
.build();