public Long querySumJe() { String sJe = redisDao.getValue("sumje"); if(!"null".equalsIgnoreCase(sJe) && sJe != null){ System.out.println("==========cache"); return Long.parseLong(sJe); }else{ synchronized (this) { sJe = redisDao.getValue("sumje"); if(!"null".equalsIgnoreCase(sJe) && sJe != null){ System.out.println("==========cache2"); return Long.parseLong(sJe); } System.out.println("==========db"); Long je = chjlmxbMapper.querySumJe(); redisDao.putValue("sumje", je+""); return je; } } }
注意:通常的在鎖裏面不會再查詢緩存了,這樣就同樣會形成緩存擊穿,因此在鎖中查詢數據庫前再查詢一次緩存是必要的,須要注意。redis