SpringCache缓存
在SpringCache官网中,有一个缓存抽象的概念,其核心就是将缓存应用于Java方法中,从而减少基于缓存中可用信息的执行次数。换句话来说。就是每次调用目标方法前,SpringCache都会先检查该方法是否正对给定参数执行,如果已经执行过,就直接返回缓存的结果。(通俗的讲,就是查看缓存里面是否有对应的数据,如果有就返回缓存的数据),而无需执行实际方法、如果该方法上位执行。则执行该方法(缓存中没有对应的数据就执行方法获取对应数据,并进行缓存),并缓存结果并返回给用户。这样就不用多次去执行数据库操作,减少cpu和io的消耗。
启动配置类中加入
@EnableCaching //开启缓存
// 声明缓存管理器--》给Dao层加入缓存管理器 @Bean public CacheManager cacheManager() { // 返回一个ConcurrentMapCacheManager的实例,其中包含一个名为"users"的缓存区域,用于存储和管理相关的数据 return new ConcurrentMapCacheManager("users"); }
缓存注解的使用
@Cacheable:
指示 Spring 在调用该方法时使用缓存。方法返回值将被存储在缓存中,以后对同样参数的调用将从缓存中获取结果,而不是重新执行方法。
@Cacheable(cacheNames = "users",key = "#accountid") // cacheNames缓存的名称 key 缓存的键 public Account findById(int accountid) { //查询操作 return account; }
@CacheEvict:
指示 Spring 在方法执行后清除缓存。通常用于删除缓存中的数据。
@CacheEvict(cacheNames = "users",key = "#accountid") public Account delect(int accountid) { //删除操作 return account; }
@CachePut:
指示 Spring 在方法调用时更新缓存。与 @Cacheable
不同的是,这个注解会始终执行方法,并更新缓存的值。
@CachePut(cacheNames = "users",key = "#accountid") public Account update(int accountid) { //更新操作 return account; }
@Caching
组合使用多个缓存注解。用来在一个方法上同时应用多个缓存操作,比如缓存、清除缓存等。
@Caching( cacheable = @Cacheable(value = "users", key = "#accountid"), evict = @CacheEvict(value = "users", key = "#accountid"), put = @CachePut(value = "users", key = "#accountid") ) public Account getAccount(int accountid) { // 获取用户信息 return account; }