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("=================未命中");