本文問題不分先後順序,具體問題請自己詳細定位。
1、redis快取穿透
場景:查詢根本不存在的資料,使得請求直達儲存層,導致其負載過大,甚至宕機。
解決方案:
1、快取空物件
儲存層未查到相應的資料後,仍然將空值存入到快取層。再次訪問該資料時,快取層會直接返回空值。
2、布隆過濾器
將所有存在的key提前存入到布隆過濾器,在訪問快取層之前,先通過過濾器攔截,若請求的是不存在的key,則直接返回空值。
2、redis快取擊穿
場景:乙份熱點資料,它的訪問量非常大。在其快取失效瞬間,大量請求直達儲存層,導致服務崩潰。
解決方案:
1、加互斥鎖
對資料的訪問加互斥鎖,當乙個執行緒訪問資料時,其它執行緒只能等待。這個執行緒訪問過後,快取中的資料將被重建,屆時其它線 程就可以直接從快取取值。
2、永不過期
不設定過期時間,所以不會出現上述問題,這是「物理」上的不過期。
為每個value設定邏輯過期時間,當發現該值邏輯過期時,使用單獨的執行緒重建快取。
3、redis快取雪崩
場景:由於某些原因,緩衝層不能提供服務,導致所有的請求直達儲存層,造成儲存層宕機。
解決方案:
1、避免同時過期
設定過期時間時,附加乙個隨機數,避免大量的key同時過期。
2、構建高可用的redis快取
部署多個redis例項,個別節點宕機,依然可以保持服務的整體可用。
3、構建多級快取
增加本地快取,在儲存層前面多加一級屏障,降低請求直達儲存層的機率。
4、啟用限流和降級措施
對儲存層增加限流措施,當請求超出限制時,對其提供降級服務。
案例 Redis 問題彙總和相關解決方案
本文收集了一些 redis 使用中經常遇到的一些問題,和與之相對應的解決方案,這些內容不但會出現在實際工作中,也是面試的高頻問題,接下來一起來看。快取雪崩是指在短時間內,有大量快取同時過期,導致大量的請求直接查詢資料庫,從而對資料庫造成了巨大的壓力,嚴重情況下可能會導致資料庫宕機的情況叫做快取雪崩。...
html相關問題彙總
1 div內容置為空 如下的html片段 這是要刪除的內容,還要保留test本身 原生js法 document.getelementbyid test innerhtml jquery法 test empty jquery方法一 test html jquery方法二 2 select選項操作 動態...
Redis學習 八 問題彙總
快取穿透和雪崩可以看做乙個問題,只是嚴重程度不同 當乙個請求到達redis之後發現沒有對應的快取資料,然後向db傳送資料請求,如果能獲取到資料那問題就停留在了快取穿透上,db獲取到的資料會快取到redis上 如果db中也沒有對應的資料,並且當這樣的請求達到一定數量級並且耗用完所有的db資源,最終導致...