00:00
好,同学们,欢迎大家继续来学习boot高级部分的内容。这是我们上硅谷boot核心技术的后八章内容,在核心技术的时候呢,我们当时前八章讲解了boot的核心原理以及应用,那么后边呢,这些内容呢,我们单独抽取出来作为spring的高级部分内容,主要包括呢,我们这个spring boot与缓存、消息检索、任务安全、分布式监控管理以及部署相关的模块。那么这些属于spring boot的一些高级场景整合,用到了一些前面的技术以及原理,我们就不再单独进行讲解。如果对spring boot核心技术还不太清楚的同学,建议先来学习spring boot核心技术。好,接下来呢,我们就来学习第一章内容,Spring boot与缓存。这章呢,我们主要会来介绍GSR、107缓存规范以及spring的缓存抽象,包括我们后来如何整合来进行缓存。那么首先呢,我们来说,缓存是每一个系统都应该考虑的一个功能,它呢用来加速我们系统的访问,以及提升我们系统的性能。
01:21
比如我们有一些需要经常访问的高频热点数据,哎,例如我们某一个电商网站的商品信息,这商品信息呢,我们存在数据库中。如果说每次来查询商品信息都要来查询数据库的话,那么这样的操作耗时太大了,代价太大,那我们呢,可以引入一个缓存中间件。我们把这些商品信息呢,也放在缓存中,这样我们不需要直接来查数据库了,我们直接来查询缓存,如果说缓存中有,那就直接来用,缓存中没有,来考虑查询数据库,数据库查到了,我们可以把这个数据再放到缓存中,方便后来继续使用,那么有了缓存以后呢,我们就能提升啊很高的性能,因为我们这个应用程序跟缓存的交互是非常快的,再比如我们一些临时性的数据,哎,我给某一个用户的手机号,我发送了一个验证码,这个验证码呢,三分钟内有效,用完就需要删除,那如果我们把这些信息也存在数据库里边,那数据库的负担也是有点大,那么我们性能也是很低的,那么呢,我们把这些临时性的数据也可以放在缓存中,那我们系统呢,就从缓存中来存取这些临时性的数据。
02:40
等等等等,缓存在我们后来的系统中用的非常多。那么为了统一我们这个缓存的开发规范,以及提升我们系统的扩展性,那这图E呢,发布了GSR107缓存规范,在这里边呢,主要定义了五个核心接口,Provider manager和en,以及但是呢,我们说啊,这个GSR107这个规范的这些核心概念,我们现在呢来做一个了解,而由于后来咱们整合起来要使用GSR107整合系统的,在这个难度呢比较大,等等等等,用的比较少,我们更多使用的是咱们这个spring的缓存抽象,那这个缓存抽象呢,也底层概念跟它是通用的,那么这几个概念呢,我们来看第一个堪称Y的,翻译过来呢,就叫缓存提供者,它的作用是来控制和管理多个缓存管理器的,看什manager,那么我们应用程序要使用缓存。
03:44
可以通过不同的缓存提供者先来得到我们这个缓存管理器,那么有了缓存管理器以后,哎,我们听这个缓存管理器顾名思义就是来管理缓存的,我们缓存管理器里边呢,管理了很多不同的缓存,这样的话呢,我们要使用缓存组件从缓存管理器中来获取就行了,我们获取到不同的某一个缓存组件以后,将我们某一条K记录来用这个缓存组件来给它进行增删、改、查保存起来,每一个缓存的这个记录它都有一个叫X有效期,一旦超过了有效期,那么我们标可以标记为过期状态们这个缓存组件呢,就应该把这个记录删掉等等等等,那我们整个交互呢,就应该是这样,我们应用程序呢,是通过来先来访问称provider,哎,我们来。
04:40
访问缓存提供者,缓存提供者呢,我们管理了多个catch manager叫缓存管理器,那么缓存管理器里边呢,才管理了多个真正的缓存,诶我们跟系统来进行缓存的增产检查操作,要用的是缓存组件,它在缓存管理器里边,那么每一种不同的缓存啊,比如我们这个缓存管理器,它专门管理了啊red操作相关的缓存,那么这个缓存管理器专门管理了edge catch相关操作的缓存,那比如我们这个缓存组件是专门来缓存员工的,这个是专门来缓存部门的,这个是关专门来缓存商品的等等等等,那我们如果要缓存员工,那我们就获取到这个缓存组件,哎,将员工的记录缓存起来,哎,一旦到了过去时间,哎,就可以不能进行更新等等等等操作。
05:32
那特别是我们这个catch manager跟catch就类似于我们什么呢?就类似于我们这个数据库连接池,跟我们这个连接一样,我们从连接池中获取连接,真正操作们从缓存这个管理器中获取到缓存,进行真正操作。那如果要使用GSR107,我们需要导入Java X需要导入这个包,那么在这个包里边呢,我们可以看一下我们刚才说的这几个接口,比如第一个我们这个看provider。我们在这。
06:08
SPI里边catch provider catch provider呢,它的核心就是来能帮我们来获取catch manager的,它能得到catch manager以后呢,Catch manager的核心就是能帮我们来,我们来往下翻,诶往下翻它的这个API能帮我们来创建某一个缓存组件,或者呢,直接获取到某一个缓存组件,这缓存组件里边来保存QY6值,而从catch manager里边拿到这个缓存组件以后,诶,我们缓存的增删改查操作就在这个缓存组件里边定义着,哎,我们都可以从它的这个API中来看到,而我们说了这个GSR107规范,它定义的都是一些接口,这样做的好处呢,就是类似于JDBC一样,诶我们直接面向接口编程,需要用到什么实现,我们再来插入什么样的缓存实现,我们系统就能运行起来了。
07:01
但是呢,我们说并不是说市面上所有的缓存组件都提供了GSR107的实现,包括在GSR107里边也定义了非常多的简化缓存开发的这些注解。也就是说,如果说没有类似的实现,那我们自己就要去来写这些实现,整个API层次开发起来比较麻烦,所以说呢,我们后来GSR 107用的比较少,我们为了简化开发,S呢,提供了他自己的缓存抽象,但是呢也定义了类似的一些注解,包括一些底层的核心概念,所以我们后来呢啊多来用spring缓存抽象。那么对GSR107规范想要更多了解的同学,我也将GSR107的规范文档给大家放到了高级课件的文档里边,这有看1.0,打开这个规范文档里边呢,帮你介绍了啊,每一个缓存注解的用法,包括一些核心概念的使用,比如上边啊有介绍缓存管理器等等各种用法。
我来说两句