00:00
好,那我们刚才呢,咱们是看了my bet一级缓存的效果啊,好,然后那我们的一级缓存呢,它的范围是circle session啊,然后也就是同一个circle session,咱们查询出来的数据会被缓存,然后咱们再通过相同的circle session再次进行查询相同数据的时候,然后会从缓存里面去取数据,而不会从数据库重新访问了,好然后下面大家来看,那我们的一级缓存呢,也有可能会失效。比如说咱们能使一级缓存失效的情况呢,就有四种,比如说大家来看咱们的第一种啊,不同的circle session,那这就不用说了,咱们刚才这个案例咱们也做过,对吧?然后不同的circle session对应的是不同的一起缓存,所以说如果咱们用的不是同一个circle session的话,那我们是没有办法从我们同一个session的缓存中去获取数据的。好啊,然后第二个同一个circle session,但是查询条件不同,大家想你缓存是不是缓存的应该是我查询过的数据,那如果我当前我查询了一个新的数据,那大家想一下,它还会从缓存里面去查吗?那缓存里面没有,那它是不是就得从我们的数据库重新去访问对不对?所以说大家注意第二种情况啊,同一个session,但是查询条件不同,还有呢,就是。
01:22
同一个同一个session,两次查询期间。执行了任意一次增删改操作,那什么叫增删执,什么叫做执行了任意一次增删改呢?大家想一下。增删改是不是会改变我们当前咱们数据库中的数据,那如果我现在比如说我缓存了一个EID为一的这条数据,然后呢,我下面把这一条数据呢,给它删除掉了,然后这个时候大家想想,我再来获获取我们EID为一的这条数据的时候,还会从缓存里面去取吗?应该就不会了吧,因为咱们的缓存是方便我们来查询,提高我们的查询速度的,对不对,对吧?然后但是它并不能影响我们当前查询的结果呀,既然我的删除都已经把这条数据给他删除掉了,那大家说你如果还从缓存里面去获取的话,那这个时候那咱们的缓存它不就不准确了吗?对不对,大家注意啊,缓存是来提高我们当前的一个查询速度的,但是它并不能影响我们查询的结果,也就是说并不能影响咱们查询的一个真实性,所以说我们在两次查询之间。
02:36
咱们执行了任意一次增删改之后,它一定是会将咱们的缓存给清空的,这个大家注意啊,好比如说咱们来做一个测试。好,然后下面咱们在这来写一个什么操作,咱们来写一个添加操作啊,大家看好,然后返回值VO,然后叫做insert emp括号,然后在这传过来一个emp对象,然后大家来看啊。
03:03
好,然后我们现在呢,然后咱们在这把咱们的方法来写一下insert,然后ID要跟方法名保持一致,好,然后insert into表明T_em,然后values括号第一个nu,第二个的话EP。然后下划线啊,不对,EP name啊,因为咱们现在访问的是属性对不对,然后井号大括号A,然后井号大括号X。井号,大括号,然后还有一个email,那最后的话应该是咱们的dad,那咱们就设置一个null就行啊好,然后下面呢,我们在这就可以来访问一下这个功能了,比如说这个是我们通过一个新的circle session来查询的,对不对?好,那我们先把它给注释掉,然后我们在这儿呢,咱们是不是可以来重新获取一下咱们的数据,这个叫EP2,这个也叫EP2,对不对,我们现在来执行了之后,大家会发现,因为咱们用的是同一个circle session,所以说它是可以从缓存里面去取的,而如果我现在呢,我在这来执行了一个什么操作,Map 1.insertemp,另一个emp,然后nu。
04:23
然后呢,这个是ABC,然后下面23,然后这个性别呢,咱们给他一个男,然后邮箱地址123艾特qq.com OK,行就这样,然后下面大家看好,我们现在是不是应该是在两次查询之间执行了一次添加的操作,那这个时候大家来想一下,任何一次增删改,你不要管它到底有没有影响到我们缓存的数据,那我们的MY也不会一个一个的去排查当前你的添加有没有影响到缓存的数据,只要是一次增删改,它必定就会将咱们的一级缓存给清空掉。
05:02
这个大家注意啊,好,下面我们在这咱们来一个执行,大家来看。好,然后大家看一下circle尾句,这是一个查询,然后这是一个添加,添加完之后,当我们再次通过同一个circle session来查询相同数据的时候,Circleq据又输出了,能看懂吗?所以说大家注意,增删改是会影响咱们当前数据库中的数据的,所以说任意的一次增删改之后都会来清空咱们的缓存,OK吧,这个大家注意。行,然后那我们下面呢,然后咱们接着往下看啊,然后当然咱们这个造成一级缓存失效的还有一种情况就是在两次查询期间手动清空的缓存,那什么叫手动清空的缓存呢?大家看好,来,我把这个添加操作给它注释掉,对吧?然后呢,我们在这咱们通过我们的这个circle session一点,其中有个方法叫做clear catch方法什么意思?Clear catch是不是就是清空缓存的意思对不对?所以说当我们来使用了这个方法之后,大家会发现它就会将我们circle session级别的一级缓存来进行清空,那这个时候当我们再次来查询相同数据的时候,缓存中还有这个数据吗?没有了,那没有的话,大家看那输出的应该是几个circle啊,两个circle,大家来看一下啊,来看看是不是两个circle,所以说这个大家注意,这个就是我们当前是一级缓存。
06:33
失效的这四种情况,首先第一个circle session不是同一个,第二个你查询的数据不是同一条,对不对,也就是说我们当前查询出来的数据缓存中有没有呢?没有,还有第三种情况就是在两次查询之间执行的任意一次增删改,还有最后一个就是清,咱们手动清空了缓存,也是会使我们当前咱们的这个缓存失效的,这个大家注意啊,行,那这个是使缓存失效的四种情况啊来。
我来说两句