00:00
好,接下来呢,我们说一下spring的缓存抽象。哎,Spring在3.1以后呢,为了简化我们这个缓存开发,如果是来使用GSR 107这些API,那么这个技术复杂性还是挺大的,此时呢,就保留了两个核心概念,一个叫catch manager,叫缓存管理器,另外一个呢,就是我们这个catch,按照以前的思想呢,缓存管理器就是来得到缓存,缓存来真正的来操作我们缓存的增删改查操作。而且呢,我们spring呢,也支持使用GSR107定义的一些缓存注解,当然spring的缓存抽象也有自己的这些缓存注解,来通过这种方式呢,是不是来统一和简化我们缓存开发技术。那么我们就先来熟悉一下SW缓存开发中的一些核心概念以及它的注解。首先呢,我们要说两个重要的接口,一个叫catch manager,一个叫catch,诶,我们之前说过,Catch manager的作用就是管理各种缓存组件的,而真正要操作缓存的是我们这个catch组件,这个catch接口下呢,如果我们要操作red,那就有相应的red实现,那么它从缓存中增删改、查数据就是联向red的,那如果我们要用edge来进行缓存数据,那就有相应的edge catch的实现,也就是说我们catch接口的实现不同,我们的缓存技术就不一样。
01:35
那么除此之外呢,W还给我们提供了这三个基本的注解,哎,他们呢,可以标注在方法上来简化我们常见的一些缓存操作,比如第一个叫catch able,翻译过来呢,就叫可缓存的,如果用它来声明标注一个方法,那么这个方法的结果呢就会被缓存起来,比如我来举一个例子,我们呢有一个方法,比如查出一个用户public user。
02:03
我们呢,叫get user们来查询某一个用户,传入一个它的ID,我们来查它,如果呢,给这个方案上我们来标注看持宝,那么相当于声明这个方法是一个可缓存的,比如第一次我们来查一号用户,那第一次进来呢,那由于之前没有一号用户的缓存结果,那么我们就会先去查出一号用户,查出一号用户的返回的这个uz结果,由于标了看就会呢被放在缓存中,当然如何给缓存中啊,增删改查数据就是利用这个看组件的,那么一旦一放在缓存中以后,下一次如果还是来查询这个一号用户,那这个方法就不用调用了,直接去缓存中拿到刚才的一号用户使用即可。这是我们第一个叫catchable,代表一个方法能被缓存,接下来呢,还有一个叫catch evict叫清空缓存。比如我们要。
03:03
删除一个用户按照ID来删除它,那么用户删除以后,缓存里边缓存的这个信息也应该被删除,所以呢,我们可以给删除方法上来标注catch evict来清空缓存,包括呢,还有一个叫catch put叫更新缓存,这个更新缓存呢,比如我们再举一个例子,我们要更新一个用户,我写一个public。User update user来更新一个用户,我们来传入这个用户的信息,那么将这个用户呢,更新完以后,来由于用户更新,我们还希望缓存里边这个用户也来更新,那我们呢,就可以给这个方法上标注一个catch put,它跟catch的不同,就是说catch put的方法总会被调用,如果标了catchable,这个方法也一旦被调过,有数据,那就不调了,而catch put呢,我们方法总会被调用,调用完了以后呢,这个结果会重新放到缓存中,所以说呢,既能保证方法被调用,而且呢,结果还会被缓存,这个呢就经常用于缓存更新,这是缓存里边基本的三个操作方法。
04:17
但我们要能使用这些缓存注解,我们就得开启基于注解的缓存模式,哎,我们使用这个an enable这个注解,而且呢,缓存过程中会牵扯到两个问题,一个叫K的生成策略,一个叫Y6的序列化策略。比如我们举一个例子,还是我们刚才这个方法,Public user get user来查询一个用户,我写一个ID,我们按照ID来查询用户。那么这个用户如果我们标了catch ni,哎,它将会放在缓存中,那么给缓存中放的时候呢?这个K它是用的是什么定这个如对象放到缓存里边,是用Java序列化的方式,还是将这个对象转成杰森字符串的是方式,这些序列化策略呢?那后来也都是需要慢慢讨论的。
05:18
下一节课呢,我们就来创建一个工程测试和使用缓存。
我来说两句