原文地址:Guava库学习:学习Guava Cache(六)CacheStats html
上一篇,Guava库学习:学习Guava Cache(五)CacheLoader 中, 咱们学习了CacheLoader抽象类,主要是其中的from方法,接收一个Function或Supplier,返回一个CacheLoader实 例,至此,咱们已经了解了如何建立一个强大的缓存机制,接下来,咱们想要收集缓存执行或使用后的一些统计信息,又该怎么作呢?如今开始本篇,Guava Cache CacheStats的学习。java
Guava Cache提供了一种很是简便的方式,用于收集缓存执行的统计信息,须要注意的是,跟踪缓存操做将会带来性能的损失,想要收集缓存的信息,咱们只须要在使用CacheBuilder的时候声明咱们想要收集统计信息便可:web
LoadingCache<String,TradeAccount> tradeAccountCache = CacheBuilder.newBuilder() .recordStats()
上面的代码,咱们经过建造者模式构造了一个LoadingCache实例,想要启用缓存信息的统计,咱们惟一要作的就是在builder里面经过recordStats()注册,而想要获取统计的信息,咱们只须要经过Cache或LoadingCache调用stats()方法,就将返回一个CacheStats实例,经过CacheStats实例能够获取到须要的统计信息,来看接下来的例子:缓存
CacheStats cacheStats = cache.stats();
下面是一个概述的清单,咱们能够经过CacheStats获取的一些信息:性能
加载缓存条目值所耗费的平均时间;学习
请求的缓存条目的命中率;ui
请求的缓存条目的未命中率;spa
缓存条数被移除的数量;code
涉及缓存性能的还有许多的信息,上面的清单只是一些咱们经过CacheStats获取到的一些信息,最后,咱们翻开CacheStats的源码,整理一下其中提供的公共方法,以下:orm
requestCount():返回Cache的lookup方法查找缓存的次数,不论查找的值是否被缓存。
hitCount():返回Cache的lookup方法命中缓存的次数。
hitRate():返回缓存请求的命中率,命中次数除以请求次数。
missCount():返回缓存请求的未命中的次数。
missRate():返回缓存请求未命中的比率,未命中次数除以请求次数。
loadCount():返回缓存调用load方法加载新值的次数。
loadSuccessCount():返回缓存加载新值的成功次数。
loadExceptionCount():返回缓存加载新值出现异常的次数。
loadExceptionRate():返回缓存加载新值出现异常的比率。
totalLoadTime():返回缓存加载新值所耗费的总时间。
averageLoadPenalty():缓存加载新值的耗费的平均时间,加载的次数除以加载的总时间。
evictionCount():返回缓存中条目被移除的次数。
minus(CacheStats other):返回一个新的表示当前CacheStats与传入CacheStats之间差别的CacheStats实例。
plus(CacheStats other):返回一个新的表示当前CacheStats与传入CacheStats之间总计的CacheStats实例。