gpt4 book ai didi

java - Guava LoadingCache 每次都为同一个键加载新值

转载 作者:搜寻专家 更新时间:2023-11-01 03:22:11 27 4
gpt4 key购买 nike

我正在使用 Guava LoadingCache 来存储数据库查询的结果。但是,尽管没有设置逐出策略,但通过 getFromCache() 获取缓存会导致每次都命中 CacheLoader load() 方法中的调试点,因此也会在数据库查询方法 getKeyFromDatabase() 中产生调试点每次都被击中。

这是我的代码:

private final LoadingCache<String, QueryResult> cache;

public MyDao() {
cache = CacheBuilder.newBuilder()
.maximumSize(40)
.build(new CacheLoader<String, QueryResult>() {
@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);
}
}

我是否遗漏了一些明显的东西?

最佳答案

好吧,伙计们虚惊一场, Guava 实际上并没有坏(惊喜)。原因是因为实例化 DAO 的代码每次都实例化了一个新对象,所以每次也实例化了一个新的缓存。我将缓存设置为静态变量,现在可以使用了。

关于java - Guava LoadingCache 每次都为同一个键加载新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27534697/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com