SpringBoot项目中缓存Cache的使用
一、缓存是什么
缓存是一种将经常使用的数据存储在高速存储介质中的技术。
二、为什么要使用缓存
- 通常情况下,我们每发一次请求,做一次查询,都会从数据库中取出数据,返回结果。
- 但使用缓存之后,我们发送相同的请求,只有第一次会从数据库中取出数据,同时将取出的数据放入缓存中,在之后的请求中,如果缓存中有数据,将会直接从缓存中读取数据,返回结果。
- 因此缓存可以提高数据的访问速度,减少对数据库的访问次数,从而提升系统的性能和响应速度。
三、缓存注解
-
@EnableCaching
用于启用缓存功能。通过在Spring Boot项目的启动类上添加@EnableCaching注解,可以启用Spring Boot的缓存管理功能。
序列 参数 解释 1 cacheNames 指定缓存组件的名字 2 key 缓存数据时使用的key,默认使用方法参数 3 keyGenerator key 的生成器。 key 和 keyGenerator 二选一使用 4 cacheManager 可以用来指定缓存管理器。从哪个缓存管理器里面获取缓存。 5 condition 可以用来指定符合条件的情况下才缓存 6 unless 否定缓存。当 unless 指定的条件为 true ,方法的返回值就不会被缓存。当然你也可以获取到结果进行判断 7 sync 是否使用异步模式。 -
@Cacheable
用于标记方法的返回值应该被缓存。当调用被@Cacheable注解标记的方法时,Spring Boot会首先在缓存中查找对应的结果,如果找到则直接返回缓存中的结果,否则执行方法的逻辑,并将方法的返回值存储到缓存中。@Cacheable注解可以指定缓存的名称和缓存的key,以及其他的一些属性。
-
@CachePut
用于标记方法的返回值应该被缓存或更新缓存。与@Cacheable不同的是,@CachePut注解会执行方法的逻辑,并将方法的返回值存储到缓存中,而不会先在缓存中查找结果。如果缓存中已经存在对应的key,则会更新缓存中的值。
-
@CacheEvict
用于标记方法执行后应该从缓存中删除对应的数据。当调用被@CacheEvict注解标记的方法时,Spring Boot会先执行方法的逻辑,然后从缓存中删除对应的数据。@CacheEvict注解可以指定缓存的名称和要删除的缓存key,以及其他的一些属性。
四、缓存注解的简单使用
-
在SpringBoot项目的启动类上添加注解@EnableCaching
-
在service查询方法上添加注解@Cacheable
-
在service添加方法上添加注解@CachePut
-
在service删除方法上添加注解@CacheEvice
-
controller方法
-
运行启动类的main方法,并进行测试,发现缓存能正常读取和更新,测试成功