什麼是快取穿透?
惡意使用者模擬請求很多快取和資料庫中不存在的資料,導致這些請求短時間內直接落在資料庫上,導致資料庫異常,比如搶購、秒殺活動的介面被使用者惡意刷,或者查詢id為-1的資料。
快取穿透解決方案:
1.增加校驗,不符合基本查詢資料規則的資料直接攔截,eg:id<=0的資料不讓查詢
2.給該key設定預設值,可以設定為null,有效時間短一點,最多不超過5分鐘
什麼是快取擊穿:
指快取中沒有,資料庫中有的一條資料(一般是快取時間到期),這時查詢這一條資料併發量比較大的話,會直接到資料庫中取資料,造成資料庫壓力過大。
快取擊穿解決方案:
1.設定熱資料有效時間加長,或者設定為永不過期
2.加互斥鎖,可以利用setnx給key加上鎖,如果快取中沒資料,那麼先嘗試 獲取鎖(reetranlock.trylock()),獲取到了就從資料庫中查詢(然後 釋放鎖reetranlock.unlock()),獲取不到就等待100ms,再次查詢
什麼是快取雪崩?
指快取中大量資料到了過期時間,此時查詢量過大會落到資料庫上,導致資料庫壓力過大。
快取雪崩解決方案:
1.快取資料隨機設定過期時間,防止同一時間大量資料過期
2.如果快取資料庫是分布式部署,將熱點資料均勻分布在不同快取資料庫中
3.設定熱點資料永不過期,或者有效期長點
快取降級:
就是在高併發高負載情況下,選擇動態的關閉一下不重要的服務,拒絕訪問,限流等,來為重要的服務節省資源,比如電商平台秒殺當天可以關閉推薦等功能。
快取穿透,擊穿,雪崩
一 快取處理流程 前台請求,後台先從快取中取資料,取到直接返回結果,取不到時從資料庫中取,資料庫取到更新快取,並返回結果,資料庫也沒取到,那直接返回空結果。二 快取穿透 描述 快取穿透是指快取和資料庫中都沒有的資料,而使用者不斷發起請求,如發起為id為 1 的資料或id為特別大不存在的資料。這時的使...
快取穿透,擊穿,雪崩
快取穿透 在高併發下,查詢乙個不存在的值時,快取不會被命中,導致大量請求直接落到資料庫上,如活動系統裡面查詢乙個不存在的活動。快取擊穿 在高併發下,對乙個特定的值進行查詢,但是這個時候快取正好過期了,快取沒有命中,導致大量請求直接落到資料庫上,如活動系統裡面查詢活動資訊,但是在活動進行過程中活動快取...
快取穿透 擊穿 雪崩
快取和資料庫中都沒有資料,而使用者不斷發起請求。如請求id為 1的資料。介面增加校驗,如使用者鑑權,id做基礎校驗 對key null做短時間快取 快取中沒有但資料庫中有的資料 一般是快取時間到期 這時併發量大,同時快取讀資料沒有,又同時去資料庫取資料,引起資料庫壓力瞬間增大。讀取資料庫資料,加互斥...