Guava库学习:学习Guava Cache(六)CacheStats

    原文地址: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获取的一些信息:性能

  1. 加载缓存条目值所耗费的平均时间;学习

  2. 请求的缓存条目的命中率;ui

  3. 请求的缓存条目的未命中率;spa

  4. 缓存条数被移除的数量;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实例。