redis缓存穿透-解决方案

上面的解决方案个人觉得时有误的,因为就算缓存了value的null值,后面的接口请求还是会判断走数据库,所以看解决方案二

解决方案二:

https://blog.csdn.net/muyi_amen/article/details/80229647   参考了博客

对于数据库中不存在的key,数据库查询的值为空,也将key对应的value缓存到redis上。

查询数据库前,到redis上判断key是否存在,如果存在,直接返回value,不管是否为空,这样就不会再去查数据库,达到了缓解数据库的作用。

       redisTemplate.opsForValue().set("ff", null);
        System.out.println(redisTemplate.opsForValue().get("ff"));

        if(redisTemplate.hasKey("ff")){
            System.out.println("命中");
            System.out.println(redisTemplate.opsForValue().get("ff"));
            return;//这样就不会再去访问数据库了。
        }
        System.out.println("=================未命中");

  

原文地址:https://www.cnblogs.com/Andrew520/p/10968428.html