概述
一,问题定位:
项目中使用Caffeine作为本地缓存,配置expireAfterAccess(最后一次写入或访问后经过固定时间过期)过期时间值2分钟,示例代码如下:
@Cacheable(key = "'findResult:'+#no")
public Object findXXXResult(String no) {
Object object= null;
object = selectByNo(no);
return object;
}
1,第一次查询结果是空值,返回结果空值(null),Caffeine会将该null值进行缓存。
2,后续在过期时间有效期内,再根据同一个no去查询,直接使用本地缓存,返回 null;导致后续流程无法进行;
二,解决办法
1,expireAfterAccess改为expireAfterWrite(最后一次写入后经过固定时间过期);会在固定时间过期后,删除key;
2,在@Cacheable增加标签unless,unless=“#result==null”。
@Cacheable(key = "'findResult:'+#no",unless="#result==null")
public Object findXXXResult(String no) {
Object object= null;
object = selectByNo(no);
return object;
}
最后
以上就是沉静口红为你收集整理的Caffeine作为缓存在查询返回空值(null)缓存解决办法的全部内容,希望文章能够帮你解决Caffeine作为缓存在查询返回空值(null)缓存解决办法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复