Caffeine 与 Guava Cache

一、概要
1.1 背景
在项目开发中,为提升系统性能,减少 IO 开销,本地缓存是必不可少的。最常见的本地缓存是 Guava 和 Caffeine,Caffeine 是基于 Google Guava Cache 设计经验改进的结果,相较于 Guava 在性能和命中率上更具有效率。
1.2 应用场景
愿意消耗一些内存空间来提升速度
预料到某些键会被多次查询
缓存中存放的数据总量不会超出内存容量
二、Guava Cache
2.1 Guava Cache缓存回收
(1)基于容量回收
maximumSize(long):当缓存中的元素数量超过指定值时。
(2)定时回收
expireAfterAccess(long, TimeUnit):缓存项在给定时间内没有被读/写访问,则回收。请注意这种缓存的回收顺序和基于大小回收一样。
expireAfterWrite(long, TimeUnit):缓存项在给定时间内没有被写访问(创建或覆盖),则回收。如果认为缓存数据总是在固定时候后变得陈旧不可用,这种回收方式是可取的。
(3)基于引用回收(Reference-based Eviction)
CacheBuilder.weakKeys():使用弱引用存储键。当键没有其它(强或软)引用时,缓存项可以被垃圾回收。
CacheBuilder.weakValues():使用弱引用存储值。当值没有其它(强或软)引用时,缓存项可以被垃

你可能感兴趣的:(java)