Java Guava-Google缓存-loadSuccessCount始终为0
我正在使用番石榴缓存,它打印在下面。loadSuccessCount和totalLoadTime始终为零 CacheStats{hitCount=0,missCount=13,loadSuccessCount=0, loadExceptionCount=0,totalLoadTime=0,RejectionCount=6} 起初所有的数据都是0,我开始记录数据。仍然加载成功计数为零。它应该返回缓存查找方法成功加载新值的次数 请帮助解释为什么这没有给出正确的值 代码:Java Guava-Google缓存-loadSuccessCount始终为0,java,caching,guava,Java,Caching,Guava,我正在使用番石榴缓存,它打印在下面。loadSuccessCount和totalLoadTime始终为零 CacheStats{hitCount=0,missCount=13,loadSuccessCount=0, loadExceptionCount=0,totalLoadTime=0,RejectionCount=6} 起初所有的数据都是0,我开始记录数据。仍然加载成功计数为零。它应该返回缓存查找方法成功加载新值的次数 请帮助解释为什么这没有给出正确的值 代码: com.google.com
com.google.common.cache.cache newCache=CacheBuilder.from(configurations).recordStats().build();
公共void put(字符串键,对象o){
newCache.put(键,o);
}
公共对象获取(字符串键){
对象o=newCache.getIfPresent(键);
返回o;
}
更新:
在stats、loadSuccessCount、loadExceptionCount、totalLoadTime中,这些都适用于LoadingCache。不适用于我正在使用的简单缓存。您发布的代码从不允许加载程序加载任何内容:
- 第一种方法将给定的对象放入缓存中,放在给定的键下。因此不涉及装载机
- 如果给定的键已经存在,那么第二个方法将获取与该键关联的值,并且不执行它不存在的任何操作。所以装载机也不涉及
事实上,您甚至没有加载缓存,因此加载的数量始终为0 您发布的代码从不允许加载程序加载任何内容:
- 第一种方法将给定的对象放入缓存中,放在给定的键下。因此不涉及装载机
- 如果给定的键已经存在,那么第二个方法将获取与该键关联的值,并且不执行它不存在的任何操作。所以装载机也不涉及
事实上,您甚至没有加载缓存,因此加载的数量始终为0 您发布的代码从不允许加载程序加载任何内容:
- 第一种方法将给定的对象放入缓存中,放在给定的键下。因此不涉及装载机
- 如果给定的键已经存在,那么第二个方法将获取与该键关联的值,并且不执行它不存在的任何操作。所以装载机也不涉及
事实上,您甚至没有加载缓存,因此加载的数量始终为0 您发布的代码从不允许加载程序加载任何内容:
- 第一种方法将给定的对象放入缓存中,放在给定的键下。因此不涉及装载机
- 如果给定的键已经存在,那么第二个方法将获取与该键关联的值,并且不执行它不存在的任何操作。所以装载机也不涉及
事实上,您甚至没有加载缓存,因此加载的数量始终为0 查看其他值
hitCount=0,missCount=13
。这里有些不对劲。我们不能在看不到任何代码行的情况下说一些代码应该做什么,为什么它会以某种方式运行。发布重现此问题的代码。@JB Nizet我已经添加了缓存生成器和get,put方法代码。@boristspider过了一段时间后,我可以看到良好的命中率。“CacheStats{hitCount=25,missCount=17,loadSuccessCount=0,loadExceptionCount=0,totalLoadTime=0,ReceictionCount=9}”查看其他值hitCount=0,missCount=13
。这里有些不对劲。我们不能在看不到任何代码行的情况下说一些代码应该做什么,为什么它会以某种方式运行。发布重现此问题的代码。@JB Nizet我已经添加了缓存生成器和get,put方法代码。@boristspider过了一段时间后,我可以看到良好的命中率。“CacheStats{hitCount=25,missCount=17,loadSuccessCount=0,loadExceptionCount=0,totalLoadTime=0,ReceictionCount=9}”查看其他值hitCount=0,missCount=13
。这里有些不对劲。我们不能在看不到任何代码行的情况下说一些代码应该做什么,为什么它会以某种方式运行。发布重现此问题的代码。@JB Nizet我已经添加了缓存生成器和get,put方法代码。@boristspider过了一段时间后,我可以看到良好的命中率。“CacheStats{hitCount=25,missCount=17,loadSuccessCount=0,loadExceptionCount=0,totalLoadTime=0,ReceictionCount=9}”查看其他值hitCount=0,missCount=13
。这里有些不对劲。我们不能在看不到任何代码行的情况下说一些代码应该做什么,为什么它会以某种方式运行。发布重现此问题的代码。@JB Nizet我已经添加了缓存生成器和get,put方法代码。@boristspider过了一段时间后,我可以看到良好的命中率。“CacheStats{hitCount=25,missCount=17,loadSuccessCount=0,loadExceptionCount=0,totalLoadTime=0,RejectionCount=9}”您能解释一下loader吗?很抱歉没有更好地理解此缓存。LoadingCache是使用Loader函数构建的缓存。典型示例:您希望缓存网页。因此,您可以使用加载程序创建缓存。加载器的工作是根据其键(网页的URL)获取网页。从缓存中获取给定URL的页面时,缓存会查看是否已经有该网页。如果它这样做了,它将返回它。否则,它调用加载程序,然后存储返回的网页并返回它。有关更多详细信息,请参阅。您能解释一下加载器吗?很抱歉没有更好地理解此缓存。LoadingCache是使用Loader函数构建的缓存。典型示例:您希望缓存网页。因此,您可以使用加载程序创建缓存。加载器的工作是根据其键(网页的URL)获取网页。从缓存中获取给定URL的页面时,缓存会查看是否已经有该网页。如果它这样做了,它将返回它。否则,它调用加载程序,然后存储返回的网页并返回它。有关更多详细信息,请参阅。您能解释一下加载器吗?对不起,没有
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 ;
}