基于Spring接口,集成Caffeine+Redis两级缓存

程序员 2024-9-11 20:23:32 146 0 来自 中国
原创:微信公众号 码农参上,欢迎分享,转载请保存出处。
在上一篇文章Redis+Caffeine两级缓存,让访问速率纵享丝滑中,我们先容了3种整合Caffeine和Redis作为两级缓存利用的方法,固然说可以大概实现功能,但实现本领还是太粗糙了,而且遗留了一些问题没有处置处罚。本文将在上一篇的根本上,围绕两个方面举行进一步的改造:

  • JSR107界说了缓存利用规范,spring中提供了基于这个规范的接口,以是我们可以直接利用spring中的接口举行Caffeine和Redis两级缓存的整合改造
  • 在分布式情况下,假如一台主机的本地缓存举行修改,须要关照其他主机修改本地缓存,办理分布式情况下本地缓存划一性问题
好了,在明白了须要的改进问题后,下面我们开始正式修改。
改造

在上篇文章的v3版本中,我们利用自界说注解的方式实现了两级缓存通过一个注解管理的功能。本文我们换一种方式,直接通过扩展spring提供的接口来实现这个功能,在举行整合之前,我们须要简朴了解一下JSR107缓存规范。
JSR107 规范

在JSR107缓存规范中界说了5个核心接口,分别是CachingProvider,CacheManager,Cache, Entry和Expiry,参考下面这张图,可以看到除了Entry和Expiry以外,从上到下都是一对多的包罗关系。
1.jpg 从上面这张图我们可以看出,一个应用可以创建并管理多个CachingProvider,同样一个CachingProvider也可以管理多个CacheManager,缓存管理器CacheManager中则维护了多个Cache。
Cache是一个类似Map的数据结构,Entry就是此中存储的每一个key-value数据对,而且每个Entry都有一个逾期时间Expiry。而我们在利用spring集成第三方的缓存时,只须要实现Cache和CacheManager这两个接口就可以了,下面分别详细来看一下。
Cache

spring中的Cache接口规范了缓存组件的界说,包罗了缓存的各种利用,实现详细缓存利用的管理。比方我们熟悉的RedisCache、EhCacheCache等,都实现了这个接口。
2.png 在Cache接口中,界说了get、put、evict、clear等方法,分别对应缓存的存入、取出、删除、清空利用。不外我们这里不直接利用Cache接口,上面这张图中的AbstractValueAdaptingCache是一个抽象类,它已经实现了Cache接口,是spring在Cache接口的根本上资助我们举行了一层封装,以是我们直接继续这个类就可以。
继续AbstractValueAdaptingCache抽象类后,除了创建Cache的构造方法外,还须要实现下面的几个方法:
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2025-2-23 06:37, Processed in 0.177632 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表