一.前言
在 Spring Boot 项目中中,缓存是一个非常重要的话题。当我们需要频繁读取一些数据时,为了提高性能,可以将这些数据缓存起来,避免每次都从数据库中读取。为了实现缓存,Spring Boot 提供了一些缓存注解,可以方便地实现缓存功能。
二.如何启动缓存
@EnableCaching注解
注解的作用是启用Spring缓存机制,用于自动配置适合所选缓存并使用CacheManager作为缓存管理器。这样可以方便地添加注释以声明方法需要缓存以及使用什么缓存等详细信息。
在SpringBoot项目中,我们开启缓存的话,需要使用@EnableCaching注解
三.@Cacheable注解
1.作用
使用@Cacheable注解就可以将运行结果缓存,以后查询相同的数据,直接从缓存中取,不需要调用方法,把方法的返回值添加缓存中
注解中的cacheNames相当于map中的key,而返回的结果集bookTypes则是map中的value
注:如果缓存存在,则使用缓存;如果缓存不存在,则执行方法,并将结果塞入缓存
2.用法
将@Cacheable注解放在方法上,通常是频繁使用的数据,我这边是一个图书类型,因为查询图书的时候会经常使用这个图书类型,将它存在缓存中可以避免每次都从数据库中读取,可以提高性能。
3.测试
这里我们使用postman进行端口测试
将要测试的方法端口输入postman中
现在将后台运行数据清空后,再测试一次这个方法的端口
再测试一遍
后台也没有再运行,而是直接从缓存中读取数据
4.结论
使用缓存可以有效地提升性能
四.@CachePut注解
1.作用
当我们查找数据时将数据库中得到的数据存在缓存中,后续如果进行添加或者删除修改等操作时,需要同步更新缓存中存储的数据,避免与数据库的数据不一致,因此在对数据库数据修改的时候,调用@CachePut注解,目的是同步数据库的数据和缓存中的数据。
@CachePut注解是先进行方法调用,然后将方法结果更新到缓存中。
2.用法
将@CachePut注解加在方法上,通常是对数据库的数据进行操作的方法,用以更新缓存。
这里的cacheNames对应的是缓存中的key,通过这个key可以将方法返回的结果更新到对应的缓存中。
注:@CachePut注解在调用方法的同时又更新缓存,它是默认先调用目标方法,然后将目标方法的运行结果存入缓存,不过需要注意的是如果要保持缓存同步更新,这个注解使用的key需要和缓存的key保持一致。
五.@CacheEvict注解
1.作用
@CacheEvict注解可以标记一个方法需要删除缓存,当我们每次调用被他注解的方法的时候,就会触发这个触发器,来删除他指定的缓存。
@CacheEvict注解是先进行方法调用,然后清除缓存。
2.用法
将@CacheEvict注解加在方法上,通常用在数据删除方法上,用以删除缓存
这里的cacheNames对应的是缓存中的key,通过这个key可以将方法返回的结果更新到对应的缓存中,删除相应的缓存。
六.总结
在 Spring Boot 中,缓存是非常重要的。通过使用缓存注解,可以方便地实现缓存功能,提高程序的性能。在代码中,我们可以通过使用 @Cacheable、@CachePut、@CacheEvict 注解来开启缓存功能,也可以通过配置文件来配置缓存属性。