前言
我们都知道,一个程序的瓶颈通常都在数据库,很多场景需要获取相同的数据。比如网站页面数据等,需要一次次的请求数据库,导致大部分时间都浪费在数据库查询和方法调用上,这时就可以利用到缓存来缓解这个问题。
简介
本文来介绍SpringBoot来简单整合缓存,使用SpringBoot+JPA+mysql来进行数据库操作。整合JPA的文章,具体可以参考 传送门。
新建项目
创建一个项目,pom文件中加入spring-boot-starter-cache依赖,完整pom如下:
配置文件如下,和整合JPA一样,没有做任何修改:
实体类代码如下:
Repository如下:
启动类上加入@EnableCaching开启缓存,完整代码如下:
还是和以往一样,使用Controller做测试,先展示一下代码:
解释测试方法
1.saveHouse方法
方法中使用到了@CachePut注解,这个注解直接将返回值放入缓存中,通常用于保存和修改方法中
2.queryHouse方法
方法中使用到了@Cacheable注解,这个注解在执行前先查看缓存中是不是已经存在了,如果存在,直接返回。如果不存在,将方法的返回值放入缓存。
3.deleteHouse方法
方法中使用到了@CacheEvict注解,这个注解在执行方法执行成功后会从缓存中移除
4.deleteCache方法
这个方法的也是使用的@CacheEvict注解,不同的是使用了allEntries熟悉,默认为false,true的时候移除所有缓存。
测试
1.首先访问http://localhost:8888/saveHouse?id=1&houseName=别墅&houseSize=1220平方米,然后查看数据库和控制台,如下图:
2.访问http://localhost:8888/queryHouse?id=1,查看页面数据和控制台。因为设置了打印执行jpa查询的话打印sql,看下图控制台没有打印,证明在保存的时候@CachePut注解已经将其放入了缓存中。
3.调用清空缓存方法http://localhost:8888/deleteCache然后在次访问查询方法http://localhost:8888/queryHouse?id=1,查看控制台如下,可以到清空缓存后,在访问就需要查询数据库。
4.调用删除方法http://localhost:8888/deleteHouse?id=1,然后在方法查询方法http://localhost:8888/queryHouse?id=1,查看控制台如下,可以到删除缓存后,在访问也查询了数据库。
源码下载 :大老杨码云
个人网站:https://www.dalaoyang.cn
关注作者公众号
领取专属 10元无门槛券
私享最新 技术干货