redis快取的穿透和雪崩

2022-09-04 08:48:11 字數 565 閱讀 8499

最近寫專案 用到redis,想要把其中的主要問題和大家分享一下:

首先是  穿透  

個人的理解因為查詢乙個不存的資料是,因為第一次查詢是到資料庫,所以要查詢這個不存的資料時會越過redis

直接去資料庫查詢,所以才會形成穿透;

解決辦法:

最常見的是布隆過濾器,將所有的資料雜湊到乙個足夠大的bitmap中,不存在的資料會被bitmap掉,

還有一種方法就是將查詢結果不論是不是空都存入快取,不過將為空的快取時間減短,不超過5分鐘。。

雪崩是和穿透有很大聯絡的,在快取失效的這段時間,發生大量的穿透,所有的查詢到達伺服器,形成雪崩

解決辦法

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

可以通過快取reload機制,預先去更新快取,再即將發生大併發訪問前手動觸發載入快取

不同的key,設定不同的過期時間,讓快取失效的時間點盡量均勻

做二級快取,或者雙快取策略。a1為原始快取,a2為拷貝快取,a1失效時,可以訪問a2,a1快取失效時間設定為短期,a2設定為長期。

Redis快取穿透和雪崩

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

Redis 快取穿透和雪崩

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

Redis快取穿透和雪崩

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