一、三个常用注解
-
@Cacheable
例子:public class QueryVo{private Long id;private String storeUser;private String storeCar;...}@Cacheable(value="myredis",key="'user_' + #vo.storeUser + '_storecar_' + #vo.storeCar")public XXXX getXXXX(QueryVo vo) { ...}
注解@Cacheable中存在有以下几个元素:
①value : 可看做命名空间,表示存储到哪个缓存之下(配置多个缓存时,选择其一进行存储)。----------------------------------spring-redis.xml----------------------------------------
②key : 表示命名空间下(该缓存下)缓存唯一key值
上述例子中其生成key值例如:user_tom_storecar_BMW750@Cacheable 用于标注需要缓存方法,当执行该方法传入相同参数时,先从缓存中取值,未取到则运行函数,取到直接返回结果,不运行函数。
-
@CacheEvict
例子:@CacheEvict(value="myredis",key="'user_' + #vo.storeUser + '_storecar_' + #vo.storeCar") public XXXX deleteXXXX(QueryVo vo) { ... }
@CacheEvict 用于标注需要删除缓存的方法,函数一定会运行,并且运行完成后删除myredis下该key的缓存。
若该函数运行完需要删除多个缓存,写法:@Caching( evict = { @CacheEvict(value="myredis",key="'user_'+#vo.storeUser+'_storecar_all'"), @CacheEvict(value="myredis",key="'user_'+#vo.storeUser+'_storecar_' + #vo.storeCar") } ) public XXXX deleteXXXX(QueryVo vo) { ... }
-
@CachePut
例子:@CachePut(value="myredis",key="'user_' + #vo.storeUser + '_storecar_' + #vo.storeCar") public XXXX modifyXXXX(QueryVo vo) { ... }
@CachePut 用于标注需要写入缓存的方法,函数运行前不查询缓存,函数必将执行且将结果以该key写入缓存,如果key已经存在就覆盖掉之前的缓存,可用于后台保存配置时及时刷新缓存。