1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 高级Java程序员除了知道GuavaCache还不知道CaffeineCache吗?

高级Java程序员除了知道GuavaCache还不知道CaffeineCache吗?

时间:2021-09-28 23:09:41

相关推荐

高级Java程序员除了知道GuavaCache还不知道CaffeineCache吗?

前面文章,小编讲过Google的内存缓存框架GuavaCache,在实战中如何使用, 有小伙伴评论说让说一下CaffeineCache,其实两者都是一样的,不过CaffeineCache是在GuavaCache的基础上进行优化,所以网上我们都可以看到他们的API其实也是一样的,本篇主要对其API及其使用进行整理,小伙伴们生产实践中只要Copy代码即可。

一、API学习成本

官方文档中描述其参考了GuavaCache的API设计,所以凡是使用GuavaCache的同学可以直接转换成CaffeineCache而没有学习成本。

二、Cache接口显性控制缓存

Cache接口允许显式控制检索、更新和无效条目。在项目中可能每个接口都会使用到缓存,但是缓存的类型不同,所以不能使用通用的CacheLoading来,那么就可以直接使用Cache接口来显性控制缓存。

1. 同步方式加载

2. 异步方式加载

三、LoadingCache方式加载

该方式适合处理通用的缓存信息,如何选择同步或者异步,可以根据自己的业务场景来判断

1. 同步方式加载

2. 异步方式加载

四、弱引用或软引用缓存

Java中的有四大引用关系,强引用,弱引用,软引用,虚引用。在Cache中可以将缓存转换成弱引用或软引用。

弱引用: 当发生任何GC就会清理缓存软引用: 只有JVM内存不够用时候才会清理缓存虽然提供了这样的能力,其实只要我们控制好缓存的过期时间其实也可以不使用,如果说有可能一瞬间就把缓存打爆,那么这种情况可以去使用。

五、外部缓存扩展

使用Caffeine提供了一个外部缓存的概念,及一级缓存为内存,我们可以理解成Map集合,同时可以将数据保存到一个外部缓存中来做二级缓存使用。Caffeine提供了一个扩展的构造接口。不过需要注意的是

当Cache缓存条目被创建、修改、删除时会通知CacheWriter。而映射被加载(如LoadingCache.get)、重新加载(如LoadingCache.refresh)或计算(如puteIfPresent)不会通知CacheWriter。

另外也要注意,CacheWriter不能与弱引用key或AsyncLoadingCache结合使用。

六、快速使用

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。