防止緩存擊穿

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

相關文章
相關標籤/搜索