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

原文地址: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实例。

时间: 2024-10-12 12:10:49

Guava库学习:学习Guava Cache(六)CacheStats的相关文章

Guava库学习:学习Guava Cache知识汇总

原文地址:Guava库学习:学习Guava Cache知识汇总 至此,我们结束了对Guava Cache 缓存机制的学习,在学习过程中,我们学习了如何简单的通过MapMaker创建最简单的ConcurrentMap缓存,我们也了解了缓存的高级特性,以及强大的LoadingCache,我们也探索和学习了CacheBuilder.CacheLoader这些核心的API,以及CacheStats.RemovalLitener等,下面对这些文章做一些汇总,方便以后的查阅和复习.     Guava库学习

Guava库学习:学习Guava EventBus(二)EventBus 事件订阅示例

原文地址:Guava库学习:学习Guava EventBus(二)EventBus 事件订阅示例 上一篇Guava库学习:学习Guava EventBus(一)EventBus,我们简单的对Guava基于事件的编程进行了介绍,学习和了解了EventBus类的使用,本篇起,我们通过一系列的示例代码深入的学习EventBus类,本篇学习Guava EventBus(二)EventBus 事件订阅示例.     订阅Subscribe 首先,我们假定定义了如下所示的TradeAccountEvent类

Guava库学习:学习Guava Files系列(二)

原文地址:Guava库学习:学习Guava Files系列(二) 上一篇,Guava库学习:学习Guava Files系列(一)中,我们简单的学习了使用Files进行文件的读写等常用操作,本篇我们继续进行Guava Files系列的学习.     InputSupplier 和 OutputSupplier Guava提供了 InputSupplier 和 OutputSupplier接口,用于提供InputStreams/Readers 或OutputStreams/Writers的处理.我们

Guava库学习:学习Guava Files系列(一)

原文地址:Guava库学习:学习Guava Files系列(一) 对程序开发人员来说,文件的读写是很重要的一项技能.但是令人惊讶的是,尽管Java提供了一个丰富而健壮的I/O库,进行一些基本的文件操作却显得很繁 琐.不过在Java 7中已经发生了一些改变,但那些使用Java 6的就不那么好运了.幸运的是,Guava做了一些我们期望I/O库做的事情,提供了一系列的工具,让我们能够更方便的进行I/O操作.本篇,我们就开始来学习如何使用Guava Files进行一些I/O操作. 尽管Java 7做了一

Guava库学习:Guava 零碎知识

这将是Guava库学习系列的最后一篇,但是仍然包含许多零零碎碎的知识.虽然不可能覆盖所有Guava涉及的知识,但我们会竭尽所能.本篇将会介绍一些Guava中有用的工具,并不需要再开一个系列.本篇学习的一些工具可能并不会经常使用,但当你需要时,它是必不可少的.接下来,开始本篇的学习. 本篇,我们将主要学习以下内容:Hashing.BloomFilter.Optional.Throwable. Hashing散列类包含静态实用方法获取HashFunction实例 BloomFilter数据结构,用于

Guava学习笔记: guava集合之Multiset

Guava学习笔记: guava集合之Multiset Multiset是什么? Multiset看似是一个Set,但是实质上它不是一个Set,它没有继承Set接口,它继承的是Collection<E>接口,你可以向Multiset中添加重复的元素,Multiset会对添加的元素做一个计数. 它本质上是一个Set加一个元素计数器. Multiset使用示例: package cn.outofmemory.guava.collection; import com.google.common.ba

我的MYSQL学习心得(十六)

我的MYSQL学习心得(十六) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 我的MYSQL学习心得(六) 我的MYSQL学习心得(七) 我的MYSQL学习心得(八) 我的MYSQL学习心得(九) 我的MYSQL学习心得(十) 我的MYSQL学习心得(十一) 我的MYSQL学习心得(十二) 我的MYSQL学习心得(十三) 我的MYSQL学习心得(十四) 我的MYSQL学习心得(十五) 一步一步

锋利jQuery 学习整理之 第六章 jQuery 与Ajax 的应用

1.Ajax 的XMLHttpRequest 对象 XMLHttpRequest 是Ajax 的核心,它是Ajax 实现的关键---发送异步请求.接受响应及执行回调都是通过它来完成的.XMLHttpRequest最早是在Microsoft Internet Explorer  5.0  ActiveX 组件中被引用的. 2.JQuery 中的Ajax jQuery 对Ajax 进行了封装,在jQuery中$.ajax()方法属于最底层的方法,第二层是load().$.load()和$.post(

Maven的学习资料收集--(六) 构建Hibernate项目

前面我们使用Maven构建了Struts2项目,这里我们来试一下Hibernate项目: 这里的例子,大体框架应该是正确的,但是,对于Maven的很多约定都没有掌握,估计包的命名都不是非常好,等以后,理解深刻了再改吧 1. 构建一个基本的Web项目 这里请参考前面的博客,一样的 2. 添加依赖,修改pom.xml [html] view plaincopy <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&