1鸳址、 緩存穿透
- 原因:總是查詢不存在的數(shù)據(jù)瘩蚪,當大量請求不存在的數(shù)據(jù)時,最終請求會落在數(shù)據(jù)庫上會給數(shù)據(jù)庫帶來很大壓力稿黍。
- 解決辦法:設置返回空對象疹瘦,而不是返回null,這樣請求不會大量落在數(shù)據(jù)庫上闻察。
2拱礁、緩存擊穿
- 原因:大量請求訪問同一份熱點數(shù)據(jù)琢锋,剛好遇到熱點數(shù)據(jù)即將過期辕漂,大量請求最終落在數(shù)據(jù)庫上。
- 解決辦法:1吴超、設置熱點數(shù)據(jù)永不過期 2钉嘹、加鎖操作,當一個線程訪問數(shù)據(jù)之后重建緩存鲸阻。
3跋涣、緩存雪崩
- 原因:1禾蚕、可能是大量請求剛好遇到大量的key同時過期 2汇荐、可能是Redis服務器宕機
- 解決辦法:1、給緩存數(shù)據(jù)過期時間附加隨機值惯吕,避免大量的數(shù)據(jù)同時失效 2细诸、構建高可用的Redis集群沛贪,避免單機宕機導致服務不可用。