1. 程式人生 > 資料庫 >Redis——快取雪崩、快取穿透、快取預熱、快取更新、快取降級

Redis——快取雪崩、快取穿透、快取預熱、快取更新、快取降級

Redis的快取機制是:當有查詢操作時,會先查詢Redis,如果Redis中沒有該key,那麼就會去查詢資料庫,並把查詢結果寫入到Redis中,當下一次查詢的時候,就會直接從Redis中查詢

快取雪崩:由於記憶體的有限,我們一般會給快取設定個有效期,如果redis中大量的key在同一時刻失效了,並且,這些失效的key被同時大量訪問時,那麼這些訪問就會走資料庫,而對資料庫造成極大的壓力

快取雪崩解決方法:在快取的時候給過期時間加上一個隨機值,這樣就會大幅度的減少快取在同一時間過期

快取穿透:就是查詢的資料,在redis中不存在,在資料庫中也不存在,查詢結果是null,我們是無法寫入到Redis中,當有100萬的併發查詢這個資料時,由於redis中不存在,那麼都去資料庫中查詢,這樣會給資料庫造成極大的壓力

快取穿透的解決方法:如果發現查詢的資料不存在,那麼我們就給該key賦值,賦一個空字串"",由於記憶體有限,對該空串設定一個較短的過期時間,這樣當發生高併發時,就可以直接走redis快取

快取預熱:就是我們程式猿,可以先把可能高訪問的資料訪問一遍,載入到redis快取中,這樣當專案部署之後,使用者去訪問就可以直接訪問redis快取了,減輕了資料庫的訪問壓力

快取更新:當我們更新資料時,我們先把資料庫中的資料更新了,成功之後把快取中的資料失效

快取降級:當訪問量劇增、服務出現問題(如響應時間慢或不響應)或非核心服務影響到核心流程的效能時,仍然需要保證服務還是可用的。系統可以根據一些關鍵資料進行自動降級,也可以配置開關實現人工降級,例如,有些服務不穩定剛上線而超時,可以自行降級,再例如,由於特殊原因,資料錯誤了,需要人工降級