摘抄自:解決辦法在平常高併發的系統中,大量的請求同時查詢乙個 key 時,此時這個key正好失效了,就會導致大量的請求都打到資料庫上面去。這種現象我們稱為快取擊穿。
上面的現象是多個執行緒同時去查詢資料庫的這條資料,那麼我們可以在第乙個查詢資料的請求上使用乙個 互斥鎖來鎖住它。
其他的執行緒走到這一步拿不到鎖就等著,等第乙個執行緒查詢到了資料,然後做快取。後面的執行緒進來發現已經有快取了,就直接走快取。
static lock reenlock = new reentrantlock();
public list> getdata04() throws interruptedexception finally
} else }}
return result;
}
2人點贊
redis
應對快取擊穿的解決方法
分析乙個資料是否適合快取,我們要從訪問頻率 讀寫比例 資料一致性等要求去分析.在高併發下,多執行緒同時查詢同乙個資源,如果快取中沒有這個資源,那麼這些執行緒都會去資料庫查詢,對資料庫造成極大壓力,快取失去存在的意義.打個比方,資料庫是人,快取是防彈衣,子彈是執行緒,本來防彈衣是防止子彈打到人身上的,...
應對快取擊穿的解決方法
一.什麼樣的資料適合快取?分析乙個資料是否適合快取,我們要從訪問頻率 讀寫比例 資料一致性等要求去分析.二.什麼是快取擊穿 在高併發下,多執行緒同時查詢同乙個資源,如果快取中沒有這個資源,那麼這些執行緒都會去資料庫查詢,對資料庫造成極大壓力,快取失去存在的意義.打個比方,資料庫是人,快取是防彈衣,子...
redis雪崩,穿透,擊穿以及解決方法
一瞬間有大量的訪問只是資料庫崩了,比如12點重新整理快取,在重新整理快取的同時有大量的請求訪問,由於快取中沒有資料,知己查詢資料庫知識服務宕機 解決 往redis中存入快取的時候每個key設定失效時間的時候加乙個隨機數,使其不再同一時間大批量的重新整理快取 如在集群中部署熱點資料均勻分布,或者設定熱...