多语言展示
当前在线:272今日阅读:2今日分享:38

如何使用Spring提供的Cache抽象实现进程内缓存

在高并发大流量的web应用中,存储系统尤其是数据库端的访问延迟往往会成为整个系统的性能瓶颈,解决这个问题的一个方法便是引入缓存组件,有一个说法是当一个数据的读写比超过10:1时,请一定要使用缓存来访问这类数据,能够大大降低系统的负载。但完全自己编码实现一套缓存,难度又比较大(涉及的点包括添加、过期、刷新等),那该怎么办呢?本篇经验就分享一下如何通过 Spring Cache 抽象实现一套功能完善的JVM内缓存。
工具/原料

SpringBoot,Eclipse

方法/步骤
2

创建实体类,Repository类,Service类1. 实体类充分使用Lombok注解简化代码开发,并需要使用注解 @Entity 进行标注2. Repository类继承JpaRepository即可3. Service类注入Repository类实例,实现查询所有实体的方法

3

Service类上配置Spring Cache相关信息1. 在类上通过 @CacheConfig 注解配置该类对应的缓存名称2. 在需要缓存数据的方法上使用 @Cacheable 注解进行标注,在该方法第一次调用后,会将数据添加到缓存中3. 在重载数据的方法上使用 @CacheEvict 注解进行标注,在该方法调用后,会清除缓存

4

添加数据库初始化数据,并且配置JPA在控制台打印SQL语句1. 在 resources 目录中添加 data.sql,其中包含添加数据的SQL语句2. 在 resources 目录中的 application.properties 中,添加JPA在控制台打印执行的SQL语句的配置信息

5

启动类编写代码进行测试启动类添加 @EnableCaching 注解,启用缓存抽象,并注入带有缓存功能的Service类,实现 CommandLineRunner 接口,在run方法中,多次调用Service类查询所有实体的方法,观察控制台打印的SQL,发现只有第1次调用访问了数据库,后面的多次访问都没有访问数据库。 再次调用清除缓存的方法,再次调用查询所有实体的方法,再次访问了数据库。

推荐信息