SpringBoot2.x操作缓存的新姿势(SpringBoot常用缓存技术)

网友投稿 716 2022-09-14

SpringBoot2.x操作缓存的新姿势(SpringBoot常用缓存技术)

SpringBoot2.x操作缓存的新姿势(SpringBoot常用缓存技术)

一、介绍

spring cache 是spring3版本之后引入的一项技术,可以简化对于缓存层的操作,spring cache与springcloud stream类似,都是基于抽象层,可以任意切换其实现。其核心是CacheManager、Cache这两个接口,所有由spring整合的cache都要实现这两个接口、Redis的实现类则是 RedisCache 和 RedisManager。

二、使用

Ⅰ、查询

需要导入的依赖

编写对于cache的配置

进行以上配置即可使用springboot cache了,还有一个key的生成策略的配置(可选)

注意:如果配置了KeyGenerator ,在进行缓存的时候如果不指定key的话,最后会把生成的key缓存起来,如果同时配置了KeyGenerator 和key则优先使用key。

在controller或者service的类上面添加 @CacheConfig ,注解里面的参数详情见下表:

参数名

参数值

作用

cacheNames

可以随意填写,一般是一个模块或者一个很重要的功能名称

无具体作用,只是用来区分缓存,方便管理

keyGenerator

就是自己配置的KeyGenerator的名称

全局key都会以他的策略去生成

cacheManager

自己配置的CacheManager

用来操作Cache对象的,很多对于缓存的配置也由他去管理

在标有@CacheConfig的类里面编写一个查询单个对象的方法并添加 @Cacheable注解

1 @Cacheable(key = "#id", unless = "#result == null")

2 @PatchMapping("/course/{id}")

3 public Course courseInfo(@PathVariable Integer id) {

4 log.info("进来了 .. ");

5 return courseService.getCourseInfo(id);

6 }

执行完该方法后,执行结果将会被缓存到Redis:

@Cacheable注解中参数详情见下表:

参数名

作用

cacheNames

 被缓存的时候的命名空间

key

这里的key的优先级是最高的,可以覆盖掉全局配置的key,如果不配置的话使用的就是全局的key

keyGenerator

 指定的缓存的key的生成器,默认没有

cacheManager

 指定要使用哪个缓存管理器。默认是底层自动配置的管理器

condition

满足什么条件会进行缓存,里面可以写简单的表达式进行逻辑判断

unless

满足什么条件不进行缓存,里面可以写简单的表达式进行逻辑判断

sync

加入缓存的这个操作是否是同步的

Ⅱ、 修改

编写一个修改的方法,参数传对象,返回值也改成这个对象

1 @PutMapping("/course")

2 public Course modifyCoruse(@RequestBody Course course) {

3 courseService.updateCourse(course);

4 return course;

5 }

在方法上面添加 @CachePut(key = "#course.id") 注解,这个注解表示将方法的返回值更新到缓存中,注解中的参数和 @Cacheable 中的一样,这里就略过了。

Ⅲ、 删除

编写删除方法,在方法上添加@CacheEvict 注解

1 @CacheEvict(key = "#id")

2 @DeleteMapping("/course/{id}")

3 public void removeCourse(@PathVariable Integer id) {

4 courseService.remove(id);

5 }

@CacheEvict 的参数信息见下表:

参数名

描述

allEntries

是否删除该命名空间下面的全部缓存,默认是false

beforeInvocation

在执行删除方法前就执行清空缓存操作,默认是false,如果删除方法执行报错该注解则不执行

三、 基于代码的Cache的使用

因为我们有配置的CacheManager,所以可以利用RedisCacheManager对象去手动操作cache,首先将CacheManager注入进来:

如果还看不明白,请去码云拉取源码 https://gitee.com/tianmaoliln/Spring-Boot-Cache.git

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:仅在Windows Server上运行的命令diskshadow
下一篇:VMware Workstation Pro虚拟机安装Windows 10 系统
相关文章

 发表评论

暂时没有评论,来抢沙发吧~