我是靠谱客的博主 沉静口红,最近开发中收集的这篇文章主要介绍Caffeine作为缓存在查询返回空值(null)缓存解决办法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一,问题定位:

项目中使用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)缓存解决办法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部