2015-09-04 46 views
0

我正在使用番石榴缓存并在下面打印。 loadSuccessCount和totalLoadTime始终为零。番石榴 - Google缓存 - loadSuccessCount始终为0

CacheStats {hitCount = 0,missCount = 13,loadSuccessCount = 0, loadExceptionCount = 0,totalLoadTime = 0,evictionCount = 6}

最初,所有都是0和I开始记录的统计信息。仍然loadSuccessCount为零。它应该返回Cache查找方法成功加载新值的次数。

请帮忙,为什么这是不给正确的价值。

代码:

com.google.common.cache.Cache<Object, Object> newCache = CacheBuilder.from(configurations).recordStats().build(); 

public void put(String key, Object o) {  
    newCache.put(key,o);  
} 

public Object get(String key) {  
    Object o = newCache.getIfPresent(key);  
    return o ; 
} 

更新:

在统计,loadSuccessCount,loadExceptionCount,totalLoadTime - 这些是适用于LoadingCache。不适用于我正在使用的简单缓存。

+0

看看其他值'hitCount = 0,missCount = 13'。有些事情不对。 –

+1

我们不能说某些代码应该做什么,为什么它以某种方式行为,而没有看到任何代码行。发布重现此问题的代码。 –

+0

@JB Nizet我已经添加了缓存构建器并获取,放置方法代码。 – Vaandu

回答

3

您发布的代码永远不会让装载负载任何东西:

  • 第一种方法把给定的对象到缓存中,给定项下。装载程序因此不涉及
  • 第二种方法获取与给定键相关的值(如果它已经存在),并且不执行任何它不存在的操作。所以装载机也不参与。

事实上,你甚至不用加载缓存,因此负载的数量将始终为0

+0

能否请你解释一下装载机?抱歉没有更好的理解抵制这个缓存。 – Vaandu

+0

LoadingCache是​​一个使用Loader函数构建的缓存。典型的例子:你想缓存网页。所以你用一个加载器创建一个缓存。加载器的工作是根据其关键字获取网页:网页的URL。当从缓存中获取给定URL的页面时,缓存会查看它是否已经拥有该网页。如果是这样,它会返回它。否则,它会调用加载器,然后存储返回的Web页面并将其返回。有关更多详细信息,请参阅https://github.com/google/guava/wiki/CachesExplained。 –