EhCache、GuavaCache和Caffeine之间的性能

导读:本篇文章讲解 EhCache、GuavaCache和Caffeine之间的性能,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

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的实战

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/121014.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!