Spring Cache和Redis的结合使用

119 阅读2分钟

Spring Cache介绍

Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单的加一个注解,就能实现缓存功能。 Spring Cache底层可以切换不同的cache实现,通过CacheManager接口来统一不同的缓存技术。

不同的缓存技术需要实现不同的CacheManager(CacheManager是接口,每种技术需要提供自己的实现类),默认的CacheManager是基于map实现的,项目重新启动之后,map的数据就会消失:

CacheManager的实现类对应的缓存技术
EhCacheCacheManager使用EhCache作为缓存技术
GuavaCacheManager使用Google的GuavaCache作为缓存技术
RedisCacheManager使用Redis作为缓存技术

Spring Cache的常用注解

注解位置说明
@EnableCaching启动类开启缓存注解功能
@Cacheable方法(一般用在查找方法上)方法执行前查看缓存中是否有数据,如果有数据,则直接返回缓存数据,如果没有数据,调用方法后将方法的返回值放到缓存中
@CachePut方法将方法的返回值放到缓存中
@CacheEvict方法(一般用在删除和修改方法上)将一条或多条数据从缓存中删除

注解的属性

  1. value="缓存的名称"
  2. key="SpEL表示的动态的key",需要重点关注key的设计,比如(具体可以使用哪些SpEL,请看注解的属性上方有哪些):#p0 #user.id #result.id #root.args[0]
  3. condition,条件满足时缓存。
  4. unless,条件满足时不缓存。
  5. allEntries用法:@CacheEvict(value = "setmeal", allEntries = true),表示删除setmeal下的所有key

Spring Cache使用Redis作为缓存技术

在Spring Boot项目中,使用Redis缓存技术需要:

  1. 导入maven坐标:spring-boot-starter-data-redis、spring-boot-starter-cache
  2. 配置application.yml

image.png image.png 3. 在启动类上使用@EnableCaching注解开启缓存支持。 4. 在Controller方法上加如@Cacheable、@CacheEvict等注解,进行缓存操作,注意类是否实现了Serializable接口。