Spring缓存注解
1.缓存是什么
缓存是一种数据存储技术,它将计算结果或数据存储在一个临时存储区域,以便在将来的请求中可以更快地获取这些数据。在计算机科学中,缓存通常用于加速数据访问速度,减轻后端系统的负载,提高应用程序的性能和响应速度。简单来说就是使我们在后面的查询会更快一点。
上图是简单的缓存的示意图,第一次我们从数据库取数据的时候,同时也在缓存中存入了数据,当我们第二次进行查询的时候就不是通过数据库来进行查询了,而是通过缓存来读取数据。这样就要比从数据库中直接读取数据要快很多。
2.Spring缓存注解的解释
序号 | 注解 | 解释 |
---|---|---|
1 | @Cacheable | 注解就可以将运行结果缓存,以后查询相同的数据,直接从缓存中取,不需要调用方法。 |
2 | @CacheEvict | 是用来标注在需要清除缓存元素的方法或类上的。当标记在一个类上时表示其中所有的方法的执行都会触发缓存的清除操作。 |
3 | @CachePut | 也可以声明一个方法支持缓存功能。与@Cacheable不同的是使用@CachePut标注的方法在执行前不会去检查缓存中是否存在之前执行过的结果,而是每次都会执行该方法,并将执行结果以键值对的形式存入指定的缓存中。 |
4 | @EnableCaching | 是一个Spring Framework提供的注解,它可以被用于启用缓存支持。当你在Spring Boot应用中使用@EnableCaching 注解时,Spring会自动配置并启用缓存功能。通过使用这个注解,你可以在方法上使用缓存注解(比如 @Cacheable , @CachePut , @CacheEvict 等)来控制方法的缓存行为。 |
3.Spring缓存的使用
@Cacheable(cacheNames = "allusers") @Override public List<User> findAllUsers() { return userDao.findAll(); }
@CacheEvict(cacheNames = "allusers",allEntries = true) @Override public void deleteById(long id) { userDao.deleteById(id); }
@CachePut(cacheNames = "findAll") @Override public List<BookType> findAll() { List<BookType> bookTypes = bookTypeDao.selectList(null); return bookTypes; }