资讯

展开

Redis解决缓存穿透及代码实现

作者:快盘下载 人气:

什么是缓存穿透;客户端请求的数据库都不存在;这样缓存就永远不会生效;这些请求都会打到数据库
Redis解决缓存穿透及代码实现
有如下解决方案;

    //缓存穿透
    public <R,ID>R queryWithPassThrough(String keyPrefix, ID id, Class<R>type, Function<ID,R>dbFallBack,Long time,TimeUnit unit){
        String key = keyPrefix ;id;
        //从redis中查询缓存
        String json = stringRedisTemplate.opsForValue().get(key);
        //如果存在;直接返回
        if(StrUtil.isNotBlank(json)){
            return JSONUtil.toBean(json,type);
        }
        //如果不存在
        if(json != null){
            //返回一个错误信息
            return null;
        }
        //不存在;查询
        R r = dbFallBack.apply(id);
        if(r==null){
            stringRedisTemplate.opsForValue().set(key,;;,20,TimeUnit.MINUTES);

            return null;
        }
        this.set(key, r,time,unit);
        return  r;
    

加载全部内容

相关教程
猜你喜欢
用户评论
快盘暂不提供评论功能!