初识caffeine -ag凯发k8国际
缓存在日常开发中启动至关重要的作用,由于是存储在内存中,数据的读取速度是非常快的,能大量减少对数据库的访问,减少数据库的压力。我们把缓存分为两类:
-
分布式缓存,例如redis:
-
优点:存储容量更大、可靠性更好、可以在集群间共享
-
缺点:访问缓存有网络开销
-
场景:缓存数据量较大、可靠性要求较高、需要在集群间共享
-
-
进程本地缓存,例如hashmap、guavacache:
-
优点:读取本地内存,没有网络开销,速度更快
-
缺点:存储容量有限、可靠性较低、无法共享
-
场景:性能要求较高,缓存数据量较小
-
我们今天会利用caffeine框架来实现jvm进程缓存。
caffeine是一个基于java8开发的,提供了近乎最佳命中率的高性能的本地缓存库。目前spring内部的缓存使用的就是caffeine。github地址:https://github.com/ben-manes/caffeine
caffeine的性能非常好,下图是官方给出的性能对比:
可以看到caffeine的性能遥遥领先!
缓存使用的基本api:
@test void testbasicops() {// 构建cache对象cachecaffeine既然是缓存的一种,肯定需要有缓存的清除策略,不然的话内存总会有耗尽的时候。
caffeine提供了三种缓存驱逐策略:
-
基于容量:设置缓存的数量上限
基于时间:设置缓存的有效时间
// 创建缓存对象 cache-
基于引用:设置缓存为软引用或弱引用,利用gc来回收缓存数据。性能较差,不建议使用。
注意:在默认情况下,当一个缓存元素过期的时候,caffeine不会自动立即将其清理和驱逐。而是在一次读或写操作后,或者在空闲时间完成对失效数据的驱逐。
总结
以上是ag凯发k8国际为你收集整理的初识caffeine的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇:
- 下一篇: