00:00
好,接下来呢,我们再来说一个注解,看为这个注解呢,来我们翻译过来叫缓存清除。它的作用呢?比如就是说我们删除了某一个数据以后,将这个数据之前的缓存的数据也给它删除掉,那好,我们就来写上一个方法,比如public world,我们叫delete。我来删除一个员工,删除一个员工呢,来大家传出员工的ID,然后呢来调,我们先来在控制台输出,我叫delete MP,我们要删除一个员工了,删除了这个员工以后呢,我们来把这个ID也打印上好,我们来调用employee member的删除方法,哎,得delete一套方法,我们把ID传进来啊,这个方法呢,我们就不调了啊,这个数据库就才两条数据,一会儿就删没了啊,这呢有一个删除员工,一旦呢,我们这个方法被打一打印,那我们就代表员工删除了,那删除的同时,那我们。
01:08
再次来查,那缓存中也就不应该有了,那好,我们呢,就可以来写上一个注解,叫看值为缓存清除,清除呢,我们当然写上还是来清除。EP这个数据当然要清除,这个EP缓存中放了好多个QY6,那么默认呢?我们可以指定我们要清除哪个K,答案我们可以通过K来指定要清除的数据。也就是说呢,那我们不写K的默认情况下用的也是传参的值,或者呢,我们来写上都行,我们来可以写上一个井号啊ID好,我们来写上它取出参数ID的值,我们要把它这个K的值我们清除掉,我们来写上这个controller来测试一下好。
02:01
那呢,要删除一个员工public,那就来返回一个stream叫deletemp,然后呢,把我们这个员工的ID传过来配ID好,那为了简单起见呢,还是处理一个get曼品请求,那我们就叫DEP好,那么我们这个如果删除成功,那我们就给它return一个success。Success,好,然后呢,删除,我们来调用employee service delete方法把这个ID传过来,这个方法里边呢,只要一删除,员工就会控制台有打印,好,我们来测试一下。主要呢,就是我们看他能不能删除掉缓存中的这个数据,好把它清除,那先来查询一号员工回撤,查出一个张三,他现在呢,哎,第一次查询他要查数据库,没问题以后再来查询呢,我们来发送请求,哎,不用查数据库了,直接拿缓存好,然后呢,我来调一个删除local host8080,我叫delete p杠一,我来回车。
03:14
哎,我们发现这个是404啊,我们把这个请求是不是写错了,来看一下这个controller里边。加de。好,我们不是杠一,我们是带上问号ID等于回撤,好现在呢,Success控制台呢,也打印删除了,那这个删除了以后呢,那我问大家,我再要来查一号员工怎么办呢?一号员工对应的ID这个缓存中的数据已经没有了,他要查那他就得查数据库了,回撤来看控制台,哎,查询一号员工确实呢查数据库了,所以呢,他就起作用了,Catch为那么除了这个呢?我们来看二号员工,我们来现在来查二号员工,同样如果我们把二号员工删掉啊,我们这个二号员工查了以后啊,我们第二次查二号员工回车啊,我们来看这个二号员工呢,这是不用查询的,但是如果我们说我们删呢,删掉一号这个缓存,那我们来查二号员工还要不要查询呢?我们来看刷新。
04:26
我看控制台也没有发circle,所以说呢,我们这个删呢,是按指定K来删的,我还可以用另外一个叫o entre,那么是不是删掉ERP缓存中的所有数据默认呢,它是force的,那我们来给它。改为处好,这时候呢,我们也就不用指定K了,把缓存中所有的数据呢,我们都删,那都删的情况下,我们来启动。好,我们呢,先来查询一号跟二号员工,这是查询,二号员工第一次查询呢,要查数据库,我再一次查询刷新,二号员工呢,不用查数据库,同样一号员工也一样,先查一号员工第一次查询会查数据库,好,有色Q打印,我再来查一次,哎,没有色Q打印,不查数据库,那么呢,接下来有了那个on垂,我来删上一号员工,回车我一删一号员工,他清空缓存的时候呢,他是把EP里边所有的QY6都删掉,那这样的话二号员工也会受影影响,本来二号员工我再来查询,缓存中其实全停空了,回车我们会看到控制台查询二号员工的SL语句还会被打印,所以呢,我们可以用all enry来指定清除所有的数据。
05:50
指定清除当前这个缓存中,这个缓存中所有数据,那么它还有一个啊,比较有用的属性,看这eva跟其他的里边不一样的是,它还多了一个叫before invocation,这有一个叫force,翻译过来叫是否在方法之前执行,默认呢是force。
06:18
默认的是false,这意思呢,就是我们这个缓存的清除是否在方法之前执行。那默认的这个force呢,默认代表哎是在是在方法执行之后执行的,那么呢,我们可以把它调为在方法之前执行,那在方法之前之后执行有什么区别呢?你看啊,我们现在呢,默认是在咱们这个方法执行之后执行呢,如果说我们方法在员工删除期间,我们来出了错,来模拟一下盘,那么I。
07:05
哎,我们in它,哎等于我们来十除零一下,哎,我们来出一个错,那如果出一个错以后呢,那如果是在方法之后执行清空缓存,那么我们出错了,缓存就不会清空,而如果是在方法之前清空缓存,不管我们当前方法有没有出错,缓存都会清空,所以呢,我们来测试一下这个效果,我来重新启动起来。现在呢,默认是在方法之后执行的好。那我们来看一下,我先来查二号员工,二号员工呢,我们来看控制台,从数据库查出来,我再来刷新,那么现在不用查数据库了,那么一号员工也一样,这两个呢都试出来,一号员工呢,现在在查数据库,我再来刷新,好它呢不查数据库了,但是接下来我来删清空一号员工的缓存,但是我们清空的时候呢,由于方法出现了异常,那么我们的缓存这个清空是在方法默认是在执行之后执行的,所以呢,缓存相当于没清掉来刷新,哎,我们看到了这出现处理异常,而我接下来我再来查一号员工,由于缓存没清掉,所以说一号员工还在缓存里边,不用查数据库来刷新,来看一下,诶,还是没查数据库,二号员工也一样不会查数据库,这时呢,我们被before invoc等于false默认。
08:40
的情况,也就是说我们缓存的清除默认代表缓存清除操作是在方法之后执行,而我可以呢,如果出现异常异常咱们这个缓存就不会清掉。
09:00
缓存就不会清楚,而如果呢,我把这个before invocation我们来指定成true before invocation来指定成处,那这样呢,清缓存是在方法之前,运行之前你就清的,那方法不管你运行成功没成功,相当于都清掉了。这个它代表清除缓存,是清除缓存,这个操作是在方法运行之前执行,所以呢,无论方法。是否出现异常缓存都清楚。好,我们再次来测试一下这个效果。好。用刷新,好,我们来测试一下,我先来查二号员工,我们发现呢,哎,二号员工这个SQL语句发送,哎查了数据库,那我再次来查二号员工呢,那就不用查数据库了,有缓存,但是接下来我来把二号员工删掉,来删,现在呢,我们把将方法改成了北放引卧开始,然后呢,我们删缓存是在目标方法执行之前删,无论方法出现异常,缓存都会删掉,那我来刷新。
10:28
好,我们方法出现异常了,但是呢,缓存有没有删掉,我们来查二号员工,如果说缓存删了,我们来查二号员工,他就会来查数据库,因为缓存中没有来刷新能看到呢,诶确实呢,查询二号员工查了数据库,因为缓存中没了,这就是我们这个看为它呢,就有我们这个不同的属性,我们来看一下。
我来说两句