Spring内存缓存Caffeine如何使用


这篇文章主要讲解了“Spring内存缓存Caffeine如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring内存缓存Caffeine如何使用”吧!依赖首先搭建一个标准的SpringBoot项目工程,相关版本以及依赖如下本项目借助SpringBoot 2.2.1.RELEASE + maven 3.5.3 + IDEA进行开发引入上面的jar包之后,就可以进入caffeine的使用环节了;我们主要依照官方wiki来进行演练Home zh CN ben-manes/caffeine Wikicaffeine提供了四种缓存策略,主要是基于手动添加/自动添加,同步/异步来进行区分其基本使用姿势于Guava差不多1.1 三种失效策略注意参数设置,我们先看一下失效策略,共有下面几种权重:maximumSize: 基于容量策略,当缓存内元素个数超过时,通过基于就近度和频率的算法来驱逐掉不会再被使用到的元素maximumWeight: 基于权重的容量策略,主要应用于缓存中的元素存在不同的权重场景时间:expireAfterAccess: 基于访问时间expireAfterWrite: 基于写入时间expireAfter: 可以根据读更新写入来调整有效期引用:weakKeys: 保存的key为弱引用weakValues: 保存的value会使用弱引用softValues: 保存的value使用软引用弱引用:这允许在GC的过程中,当没有被任何强引用指向的时候去将缓存元素回收软引用:在GC过程中被软引用的对象将会被通过LRU算法回收1.2 缓存增删查姿势接下来我们看一下手动方式的使用查询缓存&添加缓存getIfPresent(key): 不存在时,返回nullget(key, (key) -> {value初始化策略}): 不存在时,会根据第二个lambda表达式来写入数据,这个就表示的是手动加载缓存asMap: 获取缓存所有数据添加缓存put(key, val): 主动添加缓存清空缓存invalidate: 主动移除缓存invalidateAll: 失效所有缓存执行完毕之后,输出日志:查看缓存! 当没有的时候返回的是 uid: null
初始化一个之后,返回的是: 10
total: {02228476-bcd9-412d-b437-bf0092c4a5f6_2=11}在创建的时候,就指定缓存未命中时的加载规则它的配置,与前面介绍的一致;主要的区别点在于build时,确定缓存值的获取方式2.1 缓存使用姿势与前面的区别在于获取缓存值的方式get(key): 不用传第二个参数,直接传key获取对应的缓存值,如果没有自动加载数据getAll(keys): 可以批量获取数据,若某个key不再缓存中,会自动加载;在里面的则直接使用缓存的实际输出结果如下自动加载,没有时返回: null
自动加载,没有时自动加载一个: 100
批量获取,一个存在一个不存在时:{02228476-bcd9-412d-b437-bf0092c4a5f6=100, 02228476-bcd9-412d-b437-bf0092c4a5f6_1=101}
total: {02228476-bcd9-412d-b437-bf0092c4a5f6_2=11, 02228476-bcd9-412d-b437-bf00免费云主机域名92c4a5f6_1=101, 02228476-bcd9-412d-b437-bf0092c4a5f6=100}异步,主要是值在获取换粗内容时,采用的异步策略;使用与前面没有什么太大差别3.1 缓存使用姿势getIfPresent: 存在时返回CompletableFuture,不存在时返回null,因此注意npe的问题get(key, Function): 第二个参数表示加载数据的逻辑put(key, CompletableFuture): 手动加入缓存,注意这里也不是直接加一个具体的value到缓存synchronous().invalidate() : 同步清除缓存getAll: 一次获取多个缓存,同样的是在缓存的取缓存,不在的根据第二个传参进行加载与前面相比,使用姿势差不多,唯一注意的是,获取的并不是直接的结果,而是CompletableFuture,上面执行之后的输出如下:查看缓存! 当没有的时候返回的是 uid: null
初始化一个之后,返回的是: 10
print total cache:
5dd53310-aec7-42a5-957e-f7492719c29d_2==>12
total over在定义缓存时,就指定了缓存不存在的加载逻辑;与第二个相比区别在于这里是异步加载数据到缓存中4.1 缓存使用姿势输出:自动加载,没有时返回: null
自动加载,没有时自动加载一个: 102
批量获取,一个存在一个不存在时:{5dd53310-aec7-42a5-957e-f7492719c29d=102, 5dd53310-aec7-42a5-957e-f7492719c29d_1=103}
print total cache:
5dd53310-aec7-42a5-957e-f7492719c29d_2==>11
5dd53310-aec7-42a5-957e-f7492719c29d_1==>103
5dd53310-aec7-42a5-957e-f7492719c29d==>102
total over感谢各位的阅读,以上就是“Spring内存缓存Caffeine如何使用”的内容了,经过本文的学习后,相信大家对Spring内存缓存Caffeine如何使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是百云主机,小编将为大家推送更多相关知识点的文章,欢迎关注!

相关推荐: SpringBoot接口调用后报404如何解决

这篇“SpringBoot接口调用后报404如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoot接口调用后报404如何解决…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/03 09:57
下一篇 06/03 09:58

相关推荐