SpringBoot缓存机制
Spring框架支持透明地向应用程序添加缓存对缓存进行管理,其管理缓存的核心是将缓存应用于操作数据的方法(包括增删查改等),从而减少操作数据的执行次数(主要是查询,直接从缓存中读取数据),同时不会对程序本身造成任何干扰。
主要注解:
@EnableCaching
@Cacheable
@CacheEvict
@CachePut
更好的案例介绍请参考:(8条消息) SpringBoot 缓存 @Cacheable、@CachePut、@CacheEvict_cacheevict动态指定key_spring to do的博客-CSDN博客
1. @EnableCaching
SpringBoot继承了Spring框架的缓存管理功能,通过使用@EnableCaching注解开启基于注解的缓存支持,SpringBoot就可以启动缓存管理的自动化配置。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
@EnableCaching //开启缓存
@SpringBootApplication
public class BookMallApp {
public static void main(String[] args) {
SpringApplication.run(BookMallApp.class);
}
}
2. @Cacheable
将数据存放在Spring缓存中,在下次执行方法时,查询Spring Cache中是否已有缓存,有则不执行方法,否则执行方法,并将结果存储到Spring Cache中。
在本质上@Cache维护着一个Map<Object,Object>
@Cacheable(cacheNames="Publisher")
@Override
public List<Publisher> findAll() {
return iPublisherDao.selectList(null);
}
cacheNames:用来指定缓存组件的名字,将方法的返回结果放在哪个缓存中,可以是数组的方式,支持指定多个缓存。
测试:
由上面的图对比可以看出,第一次查询时缓存中没有数据,得去数据库中查询,所花费的时间较长,第二次查询时,缓存中有了数据,查询时直接从缓存中查查询所花费的时间明显比第一次所花费的时间少很多。
更详细介绍参考:
(8条消息) SpringBoot 缓存之 @Cacheable 详细介绍_zl1zl2zl3的博客-CSDN博客
2. @CacheEvict
能够根据一定的条件对缓存进行清空
3. @CachePut
主要针对方法配置,能够根据方法的请求参数对其结果进行缓存,和 @Cacheable 不同的是,它每次都会触发真实方法的调用。
@CachePut既调用方法,又更新缓存数据,同步更新缓存,修改了数据库的某个数据,同时更新缓存。