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

我只是一个虾纸丫 提交于 2019-12-03 17:47:33

    原文地址:Guava库学习:学习Guava Cache(六)CacheStats 

    上一篇,Guava库学习:学习Guava Cache(五)CacheLoader 中, 我们学习了CacheLoader抽象类,主要是其中的from方法,接收一个Function或Supplier,返回一个CacheLoader实 例,至此,我们已经了解了如何创建一个强大的缓存机制,接下来,我们想要收集缓存执行或使用后的一些统计信息,又该怎么做呢?现在开始本篇,Guava Cache CacheStats的学习。

    Guava Cache提供了一种非常简便的方式,用于收集缓存执行的统计信息,需要注意的是,跟踪缓存操作将会带来性能的损失,想要收集缓存的信息,我们只需要在使用CacheBuilder的时候声明我们想要收集统计信息即可:

LoadingCache<String,TradeAccount> tradeAccountCache =  CacheBuilder.newBuilder() .recordStats()

    上面的代码,我们通过建造者模式构造了一个LoadingCache实例,想要启用缓存信息的统计,我们唯一要做的就是在builder里面通过recordStats()注册,而想要获取统计的信息,我们只需要通过Cache或LoadingCache调用stats()方法,就将返回一个CacheStats实例,通过CacheStats实例可以获取到需要的统计信息,来看接下来的例子:

CacheStats cacheStats = cache.stats();

    下面是一个概述的清单,我们可以通过CacheStats获取的一些信息:

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

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

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

  4. 缓存条数被移除的数量;

    涉及缓存性能的还有许多的信息,上面的清单只是一些我们通过CacheStats获取到的一些信息,最后,我们翻开CacheStats的源码,整理一下其中提供的公共方法,如下:

    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实例。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!