Java 番石榴缓存不缓存
我对谷歌番石榴的缓存还不熟悉,但有一些问题。请看下面的代码,它很简单。以下是我的问题和代码。1.每当我调用methodJava 番石榴缓存不缓存,java,caching,guava,in-memory,Java,Caching,Guava,In Memory,我对谷歌番石榴的缓存还不熟悉,但有一些问题。请看下面的代码,它很简单。以下是我的问题和代码。1.每当我调用methodtestGuavaCache(“6048698068”)来自另一个类-它总是每次运行方法-generateDataFromDAO()。这个方法不应该只被调用一次,因为它第一次缓存时它不在内存中,下次它将从内存中服务。感谢您早日回复 public class GuavaCach{ private static Logger objLogger = Logger.getLog
testGuavaCache(“6048698068”)代码>来自另一个类-它总是每次运行方法-generateDataFromDAO()代码>。这个方法不应该只被调用一次,因为它第一次缓存时它不在内存中,下次它将从内存中服务。感谢您早日回复
public class GuavaCach{
private static Logger objLogger = Logger.getLogger(WordToPDF.class);
LoadingCache<String, String> guavaCache = CacheBuilder.newBuilder()
.maximumSize(10000)
.build(
new CacheLoader<String, String>() {
public String load(String key) throws Exception {
objLogger.debug("-----KEY IN LOAD BEFORE calling generateDataFromDAO------->" + key + "<-------");
String out = generateDataFromDAO();
objLogger.debug("-----out after calling generateDataFromDAO------->" + out + "<-------");
return out;
}
});
public String testGuavaCache(String key) throws IOException {
String dataFromDAO = null;
objLogger.debug("-----Entering testGuavaCache-----");
try {
dataFromDAO = guavaCache.get(key);
} catch (ExecutionException e) {
e.printStackTrace();
}
return dataFromDAO;
}
public String generateDataFromDAO() throws PreviewErrorMsg, IOException {
objLogger.debug("-----Entering generateDataFromDAO-----");
String data = "GeneratedDataFromDAO";
return data;
}
}
公共级瓜瓦切赫{
私有静态记录器objLogger=Logger.getLogger(WordToPDF.class);
LoadingCache guavaCache=CacheBuilder.newBuilder()
.最大尺寸(10000)
.建造(
新缓存加载程序(){
公共字符串加载(字符串键)引发异常{
debug(“----在调用generateDataFromDAO之前输入LOAD-->”+KEY+“+out+”您每次提出问题时都要创建一个完整的新缓存,并且(空)新缓存中没有任何答案。您需要创建一个缓存,保留它,并反复向它提出相同的问题,以获得好处。您没有发布太多关于如何使用它的信息,但您应该只在其他代码中调用new GuavaCach()
,然后调用g.testGuavaCache(key)
重复。每次提出问题时,您都在创建一个完整的新缓存,并且(空)新缓存中没有任何答案。您需要创建一个缓存,保留它,并反复向它提出相同的问题,以获得好处。您没有发布太多关于如何使用它的信息,但您应该只在其他代码中调用new GuavaCach()
,然后调用g.testGuavaCache(key)
重复。您没有显示调用这些方法或输出的代码。解释问题的两个调用可能有所不同。Guavach gCache=new Guavach();gCache..testGuavaCache(“6048698068”);是否每次都调用new Guavach()
?是-调用new Guavach())每次都没有显示调用这些方法或输出的代码。这两个调用可能会有一些不同,这可以解释问题。Guavach gCache=new guavacch();gCache..testGuavaCache(“6048698068”);是否每次都调用new guavacch()
?是-调用new guavacch()每次或将私有guavaCache
成员更改为静态。或将私有guavaCache
成员更改为静态。