概述
我正在使用Guava LoadingCache来存储数据库查询的结果.但是,尽管没有设置逐出策略,通过getFromCache()进行缓存,导致我的CacheLoader load()方法中的调试点每次都被命中,因此也导致数据库查询方法中的调试点getKeyFrom
Database()每次被击中.
这是我的代码:
private final LoadingCache cache;
public MyDao() {
cache = CacheBuilder.newBuilder()
.maximumSize(40)
.build(new CacheLoader() {
@Override
public QueryResult load(String key) throws DatabaseException {
return getKeyFromDatabase(key);
}
});
}
public QueryResult getFromCache(String key) throws DatabaseException {
try {
return cache.get(key);
} catch (ExecutionException e) {
throw new DatabaseException(e);
}
}
private QueryResult getKeyFromDatabase(String key) throws DatabaseException {
try {
...
return new QueryResult();
} catch (SQLException e) {
throw new DatabaseException(e);
}
}
我错过了一些明显的东西吗?
最佳答案 好的误报家伙,番石榴实际上并没有被打破(惊喜).原因是导致实例化DAO的代码每次都实例化一个新对象,因此每次都会实例化一个新的缓存.我使缓存成为一个静态变量,它现在有效.
最后
以上就是怡然花瓣为你收集整理的java loadingcache_java – Guava LoadingCache每次为相同的密钥加载新值的全部内容,希望文章能够帮你解决java loadingcache_java – Guava LoadingCache每次为相同的密钥加载新值所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复