Ehcache与Guava Cache的区别浅谈

摘要:
最近,我们正在进行一些缓存修改场景,这些场景对于JVM级缓存来说太重了;当缓存过期或命中失败时,这两个缓存都可以通过加载接口重载数据,因为GuavaCache根据值是否为空来判断是否需要加载。不允许空返回是一个很好的考虑;两者都是非常成熟的JVM级缓存。当Ehcache适用时,需要持久性。有必要使用持久性函数,以避免不准确的持久性数据影响结果。

最近在做一些缓存改造的场景,有如下一些经验总结:

缓存版本:

Ehcache:2.8.3
Guava:17.0

  1. Ehcache支持持久化到本地磁盘,Guava不可以;
  2. Ehcache有现成的集群解决方案,Guava没有。不过个人感觉比较鸡肋,对JVM级别的缓存来讲太重了;
  3. Ehcache jar包庞大,Guava Cache只是Guava jar包中的工具之一,而且后者远远小于Ehcache;
  4. 两种缓存当缓存过期或者没有命中的时候都可以通过load接口重载数据,调用方式略有不同。两者的主要区别是Ehcache的缓存load的时候,允许用户返回null,而Guava Cache则不允许返回为null,因为Guava Cache是根据value的值是否为null来判断是否需要load,所以不允许返回为null,但是使用的时候可以使用空对象替换。不允许返回null是一个很好的考虑;
  5. Ehcache有内存占用大小统计,Guava Cache没有,需要自己开发;
  6. Ehcache在put缓存的时候,对K、V都做了包装,对GC有一定影响。

什么时候适用Ehcache、什么时候适用Guava cache?

首先,两者都是很成熟的JVM级别缓存,所以在绝大多数情况都是可以满足要求的。

适用Ehcache的情况

  1. 需要持久化持久化。使用持久化功能需要,缓存稳定,以免持久化的数据不准确影响结果。
  2. 有集群解决方案。

适用Guava cache的情况
Guava cache说简单点就是一个支持LRU的ConCurrentHashMap,它没有Ehcache那么多的各种特性,只是提供了增、删、改、查、刷新规则和时效规则设定等最基本的元素。做一个jar包中的一个功能之一,Guava cache极度简洁并能满足觉大部分人的要求。

总结
Ehcache有着全面的缓存特性,但是略重。Guava cache有最基本的缓存特性,很轻。大家根据具体情况选择使用。

免责声明:文章转载自《Ehcache与Guava Cache的区别浅谈》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Beta分布Windows API 教程(七) hook 钩子监听下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

iOS开发——你真的会用SDWebImage?

http://www.cocoachina.com/ios/20160503/16064.html 本文授权转载,作者:hosea_zhou(简书) SDWebImage作为目前最受欢迎的图片下载第三方框架,使用率很高。但是你真的会用吗?本文接下来将通过例子分析如何合理使用SDWebImage。 使用场景:自定义的UITableViewCell上有图片需要...

【技术贴】解决相册thumbnails文件过大 小米缩略图缓存根除办法

命令:cd.> I:\DCIM\.thumbnails I为你的小米插到电脑上的usb的盘符,进到你的usb里面的此文件夹中,删除.thumbnails文件夹,然后把上面的命令右键复制,然后再cmd里面右键粘贴,然后打个回车即可。 此时,你的usb里面就会生成 ok 开始观察你的内存卡剩余容量吧。看看还会不会继续沾满你的USB。如果此方法不错,请...

HTTP请求流程你了解了么?

我又回来了,先来波推广,最硬的资源来自公众号:前端美食汇,欢迎大家关注公众号获取最新的技术。提示,文末有福利,最硬的文章会首先发布在公众号上喔 预备知识 前文没有描述到传输和协议直接的层级对应关系,大概补充下网络通信中数据传输对应的协议,首先了解下OSI(开放式系统互联:Open System InterConnection)七层 模式,及其对应不同层次的...

文件系统中对页高速缓存的操作

本文从read函数入手,主要讲述从页缓冲,一直到具体的块请求被提交给块设备驱动程序的过程,以下是本文讲述的一张概图,也是对本文的一个概括,可以结合本图,首先由一个从全局上有个清楚的认识,然后再去查看具体的代码,当然本文只是从大体流程上对页缓冲的处理流程进行分析,还有很多小的细节没有搞清楚,后面还需要继续研究。 1.具体文件系统 我们知道通用文件系统也就是虚...

Google的Web性能优化新方法——Diffable

来源于InfoQ: Google Maps的开发人员Josh和James最近提出并实现了一种Web性能优化新方法——Diffable, 即在浏览器加载Web页面时,促使其比较相关文件(Html、JavaScript等)在服务器端和客户端缓存区的版本并只下载差量(Deltas),降 低网络下载造成的延迟。本文简要介绍了Diffable方法的背景、原理、优势和...

关于H5本部缓存localStorage,sessionStorage

HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 一直存在除非用户手动清除缓存;是基于域的,任何该域下的所有页面都可访问localStorage sessionStorage - 针对一个 session 的数据存储 浏览器关闭时清除 之前,这些都是由 cookie 完成的。但是 cookie 不适...