00:00
我们刚才看了一下和缓存有关的这些设置。接下来呢,我们对这个一级缓存跟二级缓存的这个工作,嗯,原理做一个总结。那么首我们来以画图表示啊,首先我们知道一级缓存它是不是存在于级别啊。所以说呢,一个CIRC session,哎,我们拿这个方框表示一个CIRC session,就是代表跟数据库的一次绘画,那么呢,我们当前系统可能会有很多个s session跟数据库在同时回话。好,我们来画一个数据库。这些呢,都和数据库进行交互。好,他们都去数据库里边查数据,那么查数据呢,我们也说了,哎,你去数据库中查数据没问题。也就是说呢,如果查出来的数据,数据一旦一查出来以后,这是我们这个数据库。
01:07
数据呢,一查出来以后呢,会干嘛,是不是放在我们当前circle session对应的那个缓存中啊,那么这个呢,就是我们认为的一级缓存所在地,而每一个circle session都对应这么一块区域。哎,这是它的一级缓存。好,每一个赛,我把其他的都画出来。好,每一个s session呢,都有与之对应的一个一级缓存。嗯。那么呢,哎,当我们查出的这个数据,数据一旦被查询出来,哎就会在放在一级缓存中。好,查出以后就放进去。
02:00
啊,查出以后我们就放进去来,每一个都一样,数据呢,一旦被查出,我们呢,就会放在一级缓存中。然而我们这知道这个语句缓存呢,范围太小。范围太小。如果我们新的进来。我还想要之前查查过的数据,比如呢,他是查一号员工。好,他是查一号大病葡萄。E。哎,他要来查,查出呢,放在一级缓存中。那么呢,它是查二号的MP。而这个呢,我们是查这个三号的。啊,一号的咱们这个第1PT。哎,每一个绘画可能查的不一样,但是呢,如果我们新的绘画要进来,诶新的SESSION1进来以后,我还要这个一号的这个员工,那就,哎,抱歉了,因为你新的s session对应自己的一级缓存区。
03:05
这样的话呢,诶,你还要查我们这个一号员工,你呢就得从数据库里边拿,因为你这个缓存区里边并没有这个员工,当然他查出来以后还会保存进他的一级缓存。有呢?至于这种情况,我们有了一个更大范围的缓存,就是我们二级缓存。好,它的范围更大。一级缓存呢,是以一个线一个circleq session为级别的,就是呢同一次绘画对应一个缓存,而这个二级缓存呢,它范围比较大,但是呢,它是以一个namepace为级别的,比如说呢来画出这个级别。比如呢,我们当前的这个。我们有employee。我们的namespace呢,很长,什么comt,硅谷。
04:02
点我们这个啊,MY.do employee member,好,这是我们的第一个name,那么呢,我们也有众多的name,每一个name它都完成不同的增删查功能。好。慢点。好,而我们呢,二级缓存是它name space对应的缓存,也就是说,哎,在这个里边它保有一块区域,诶这一块区域。这块区域是它的I52级缓存区。二级缓存好,也就是说呢,一个name对应一个它自己的二级缓存区。来,把它画出来好,每一个name space呢,都有与它自己对应的这一块二级缓存,它也一样有与它自己对应的二级缓存。
05:06
而这个二级缓存要能生效呢,我们说只有是当这个一级啊,绘画一关以后,绘画关闭会话里边呢,刚才查出的employee数据是用employee member查的,就会保存在这个二级缓存中。要等这个会话关闭。哎,以其他的都一样,Employee查的会话关闭,保存在employee的map中,那么其他查的的呢?我们dept查的,那么会话关闭就保存在de PT的这个map中。好,我们现在呢,又要做一个新的查询,我要查一号部门,怎么办啊,新的绘画一进来一看,二级缓存中之前已经有一个会话查出一号部门,并且会话关闭了,把数据保存在二级缓存里边了,就拿二级缓存中的数据。
06:09
所以说呢,这块大家注意绘画关闭,那么一级缓存里面的数据才能被进来,进来以后呢,我们下一次我们把这个颜色呢画上。黑颜色好,关闭以后呢,我们下一次会画再进来,记着啊,新的绘画进来,如果有二级缓存的情况下,一定要先看二级缓存,要不然直接来瞅一级缓存,跳过二级缓存,你就没法找到全局都能共享的数据了,所以说呢,我们这个新会话。进入咱们会,哎,先去查找咱们这个二级缓存中是否有咱们这个对应的数据。也就是说呢,如果我还是调用department member,我调用get department8id,我查一号部门,但是呢,这个一号部门查询的数据,诶已经在这里边有了,所以说呢,他就直接去我们当前的这个department member的二级缓存拿到就行。
07:14
我们这个缓存呢,特别是我们二级缓存。马蒂已经规定好了这些接口catch,诶,就是这个catch接口。在这个看始接口下呢,有很多的实线,哎,我们看到了这么多的实现。这么多的实现,而我们这个缓存呢,都是基于这个啊,Purpose catch,那么呢,我们这个你还有这个ized的catch,咱们这个缓存帮你进行序列化,反序列化,包括我们之前看过的Fi fo ru,有各种各种各样的缓存放在这。好,这是我们马贝蒂斯对我们这个缓存的这个实现有这么多,但是呢,我们随便来进一个缓存啊,进入我们自己,我们马贝蒂斯内部用的pro catch来我们来看到这个缓存呢,其实就是一个map给里边进行保存数据来保存,调用put object方法get object,当然这些方法都是被我们这个看接口已经定义好了。
08:21
所以说呢,整个缓存机制就是这样。大家需要记住的就是缓存的使用顺序。一。一旦一进进来以后,我们都是先看二级缓存,因为它的范围更大,再来看一级缓存。一级。最后呢,等两个缓存中都没数据,我们才会去查询数据。所以说呢,这是我们这个缓存的原理机制,大家在这一块哎注意一下。
我来说两句