SpringCache之@CachePut的使用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SpringCache之@CachePut的使⽤
使⽤CachePut注解,该⽅法每次都会执⾏,会清除对应的key值得缓存(或者更新),
分为以下两种情况:
如果返回值null,下次进⾏该key值查询时,还会查⼀次数据库,此时相当于@CacheEvict注解;
如果返回值不为null,此时会进⾏该key值缓存的更新,更新缓存值为返回的数据;
分析:情况⼀返回值为null:
//使⽤Redis缓存
@Cacheable(value="Manager",key="#id")
public User findById(Integer id) {
System.out.println("---查数据库DB-----");
return userMapper.selectByPrimaryKey(id);
}
@CachePut(value="Manager",key="#manager.getId()")
//@CacheEvict(value="Manager",key="#manager.getId()")//清除数据
public User update(User manager) {
userMapper.updateByPrimaryKeySelective(manager);
//return userMapper.selectByPrimaryKey(manager.getId());
return null;
}
情况⼆返回值不为null:
先进⾏数据id为1的查询,发现下次查询id为1的数据不会再查询DB,直接⾛缓存;
此时进⾏id为1数据更新操作,并且返回值为null;
进⾏id为1的数据查询,发现此时id为1缓存不存在,进⾏DB查询;
//使⽤Redis缓存
@Cacheable(value="Manager",key="#id")
public User findById(Integer id) {
System.out.println("---查数据库DB-----");
return userMapper.selectByPrimaryKey(id);
}
@CachePut(value="Manager",key="#manager.getId()")
//@CacheEvict(value="Manager",key="#manager.getId()")//清除数据
public User update(User manager) {
userMapper.updateByPrimaryKeySelective(manager);
return userMapper.selectByPrimaryKey(manager.getId());
//return null;
}
先进⾏数据id为1的查询,发现下次查询id为1的数据不会再查询DB,直接⾛缓存;
此时进⾏id为1数据更新操作,返回值不为null;
进⾏id为1的数据查询,发现此时id为1缓存被更新为更新的数据,且没有进⾏DB查询操作;
补充:@CachePut和@Cacheable的区别
@CachePut负责增加缓存
@Cacheable负责查询缓存,如果没查到,则将执⾏⽅法,并将⽅法的结果增加到缓存
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

如有错误或未考虑完全的地⽅,望不吝赐教。

相关文档
最新文档