redis的快取穿透和雪崩效應

2021-09-25 17:32:22 字數 512 閱讀 8795

快取穿透:在redis中一般用key去快取中查詢所對應的value值,如果不存在則去後端系統(入db),一些惡意的請求會故意查詢不存在的key,請求量很大,對後台系統的造成很大的壓力,這就是快取穿透;

如何避免:

1.對查詢結果為null的key進行快取,快取時間稍短了一些,或者該key對應的資料insert後再進行清理快取;

2.對一定不存在的key進行過濾,把所有可能存在的key放到乙個大的bigmap中,查詢時從過該bigmap過濾;

雪崩效應:

當伺服器重啟或者是大量快取中的某乙個時間段失效,這樣失效的時候,會給後端系統帶來很大的壓力,導致系統崩潰;

如何避免?

1.做二級快取,a1為原始快取,a2為拷貝快取,a1失效時,可以訪問a2,a1快取時間設定短,a2設定為長期;

2.不同的key設定不同的過期時間,讓快取失效的時間點盡可能均勻;

3.在快取失效後,通過加鎖或者佇列來控制讀資料庫寫快取的執行緒數量。比如對某個key只允許乙個執行緒查詢資料和寫快取,其他執行緒等待

Redis快取穿透和雪崩

快取的目的是什麼?提高效能,快取查詢的速度比去資料庫查詢要快。快取會分擔部分請求,減少併發壓力。那麼快取穿透是什麼?怎麼解決快取穿透呢?一般快取系統,按key去查詢value,如果不存在相應的key,那麼就會去資料庫查詢,如果key對應的value是一定不存在的,並且對key的併發查詢很高,那麼每次...

Redis 快取穿透和雪崩

快取穿透是指快取和資料庫中都沒有的資料,而使用者不斷發起請求,如發起為id為 1 的資料或id為特別大不存在的資料。這時候就會繞過快取,每次都請求資料庫,這樣的話,大量的請求都直接到達資料庫,這種現象就叫快取穿透。list list demoservice.getdemodata demoid 防止...

Redis快取穿透和雪崩

服務的高可用問題 redis快取的使用,極大的提公升了應用程式的效能和效率,特別是資料查詢方面。但同時,它也帶來了一 些問題。其中,要害的問題,就是資料的一致性問題,從嚴格意義上講,這個問題無解。如果對資料 的一致性要求很高,那麼就不能使用快取。另外的一些典型問題就是,快取穿透 快取雪崩和快取擊穿。...