Redis 是一个key-value 的存储系统,value可以存储string,List,Map等各种类型的数据。多用于缓存每次都要查询的固定数据,降低对数据库的访问量,调高网站性能。
下面主要介绍spring的三个关于Redis的注解,@Cacheable,@CacheEvict,@CachePut。
@Cacheable
@Cacheable注解类似于保存放法。注解可以标记在方法上,也可以在类上。在某一个方法上就将这个方法的返回值放到cache中。在一个类上,类中的方法的返回值都放到cache中。
@Cacheable注解有几个重要属性。value 是缓存的名称。key键值对中的键,可以自定义也可以默认生成。condition是缓存存入的条件。
//将地区名称长度大于5的地区信息,以地区名称为key放入regions缓存中
@Cacheable(value = " regions",key="#regionName",condition="#regionName.length()>10")
public List<SysRegion> findRegion(String regionName) {
List<SysRegion> list = this.findByRegionName(regionName);
return list;
}
@CacheEvict
@CacheEvict相当于删除,将符合注解中属性的缓存清除。
//将regions缓存信息全删除
@CacheEvict(value = "regions", allEntries = true)
public void deleteRegion() throws TpwsBusinessException {
}
@CacheEvict除了value,key,condition 属性外,还有 allEntries、beforeInvocation属性。allEntries是boolean类型, 为true表示清除缓存所有数据,默认为false。beforeInvocation默认为false,清除缓存是发生在调用方法之后,改为true,就发上在调用方法之前,即使方法出错也会清除。
@CachePut
@CachePut注解相当于update。确保添加注解的方法会执行,并将改变的数据写入缓存
// 执行查询方法,并将更新regions缓存的值
@CachePut(value = " regions",)
public List<SysRegion> upRegion(String regionName) {
List<SysRegion> list = this.findByRegionName(regionName);
return list;
}