JAVA结合Redis处理缓存穿透问题
public List<WeixinMenu> getList() { List<WeixinMenu> weixinMenuList= (List<WeixinMenu>) redisTemplate.opsForValue().get("weixinMenuList"); //先在缓存中查询一遍 if (weixinMenuList==null){ synchronized (this){ weixinMenuList= (List<WeixinMenu>) redisTemplate.opsForValue().get("weixinMenuList"); //如果缓存空了,在线程加锁的情况下再从缓存中查询一次 if (weixinMenuList==null){ weixinMenuList=WeixinMenuMng.getList(); //还是没有查到,就从数据库查询,查询后放到缓存中 redisTemplate.opsForValue().set("weixinMenuList",weixinMenuList); } } } return weixinMenuList; }
-----------------------有任何问题可以在评论区评论,也可以私信我,我看到的话会进行回复,欢迎大家指教------------------------
(蓝奏云官网有些地址失效了,需要把请求地址lanzous改成lanzoux才可以)