EhCache、GuavaCache和Caffeine之间的性能

本文介绍了GuavaCache、EhCache及Caffeine三种缓存技术的特点与区别,包括它们各自的实现原理、性能表现以及适用场景。GuavaCache是GoogleGuava工具包提供的本地缓存实现;EhCache作为纯Java进程内缓存框架被广泛应用于Hibernate中;而Caffeine则是针对Java8优化的Guava缓存重写版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Guava Cache

Google Guava工具包是一个非常方便易用的本地化缓存实现,基于LRU算法实现,支持多种缓存过期策略。Guava在每次访问缓存的时候判断cache数据是否过期,如果过期,这时才将其删除,并没有另起一个线程专门来删除过期数据。内部维护了2个队列accessQueue和writeQueue来记录缓存中数据访问和写入的顺序。访问缓存时,先用key计算出hash,从而找出所在的segment,然后再在segment中寻找具体数据,类似于使用ConcurrentHashMap数据结构来存放缓存数据。

EhCache

EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。

Caffeine

Caffeine是基于Java8,对Guava缓存的重写版本,在Spring Boot 2.0中将取代Guava,基于LRU算法实现,支持多种缓存过期策略。Caffeine使用Disruptor框架的RingBuffer数据结构记录,RingBuffer是一个环形队列,并且是无锁的,利用的是缓存行的特性。

比较:

  1. 在加过期时间的情况下三个缓存方案的性能均有所提升
  2. Guava不加过期时间的情况下高并发会OOM,Guava使用jdk的Queue记录缓存的写读情况,导致OOM
  3. EhCache在加过期时间的情况下比Guava的性能要好
  4. Caffeine读比写的性能比Guava和EhCache要高很多

下节内容带你们进入springboot集成Caffeine的实战

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码搬运工阿新

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值