首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >芭乐缓存不是缓存

芭乐缓存不是缓存
EN

Stack Overflow用户
提问于 2013-08-02 12:42:56
回答 1查看 3.1K关注 0票数 1

我刚开始使用Google Guava缓存,但有一些问题。请看下面的代码,它很简单。以下是我的问题和代码。1.每当我从另一个类调用testGuavaCache("6048698068");方法时-每次都运行method - generateDataFromDAO();。这个方法不应该只被调用一次,当它不在内存中时,第一次它将被缓存,下一次它将从内存中提供服务。感谢您的尽早回复。

代码语言:javascript
复制
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;
    }
}

在另一个类中-我在上面调用:

新建gCache = GuavaCach GuavaCach();gCache..testGuavaCache("6048698068");

EN

回答 1

Stack Overflow用户

发布于 2013-08-02 23:48:59

每当你问一个问题时,你都会创建一个全新的缓存,而(空的)新缓存中没有任何答案。您需要创建一个缓存,保留它,并反复询问相同的问题才能获得好处。您并没有详细介绍如何使用它,但是您应该只在其他代码中调用new GuavaCach(),然后重复调用g.testGuavaCache(key)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18008914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档