redis 快取穿透與快取雪崩

2021-07-15 22:48:48 字數 943 閱讀 4686

快取穿透

快取系統,按照

key去查詢

value,

當key

對應的value

一定不存在的時候並對

key併發請求量很大的時候,就會對後端造成很大的壓力。

如何避免

1.對查詢機構為空的情況也進行快取,快取的時間設定端一點,或者對該

key對應的資料

insert

之後清理快取。 2.

對一定不存在的

key進行過濾,可以把所有存在的

key放到乙個大

bitmap

中,查詢時通過該

bitmap

過濾。

快取雪崩

分布式快取系統面臨的問題

快取一致性問題 1

:快取系統與底層資料的一致性。這點在底層系統是「可讀可寫」時,寫得尤為重要 2

:有繼承關係的快取之間的一致性。為了盡量提高快取命中率,快取也是分層:全域性快取,二級快取。他們是存在繼承關係的。全域性快取可以有二級快取來組成。 3

:多個快取副本之間的一致性。為了保證系統的高可用性,快取系統背後往往會接兩套儲存系統(如

memcache

,redis等)

快取穿透和快取雪崩

上面有講述。

快取資料的淘汰

快取淘汰的策略有兩種:

(1)

定時去清理過期的快取。(2

)當有使用者請求過來時,再判斷這個請求所用到的快取是否過期,過期的話就去底層系統得到新資料並更新快取。

兩者各有優劣,第一種的缺點是維護大量快取的

key是比較麻煩的,第二種的缺點就是每次使用者請求過來都要判斷快取失效,邏輯相對比較複雜,具體用哪種方案,大家可以根據自己的應用場景來權衡。

1. 預估失效時間

2. 版本號(必須單調遞增,時間戳是最好的選擇)

3. 提供手動清理快取的介面。

Redis快取穿透 快取雪崩

把redis作為快取使用已經是司空見慣,但是使用redis後也可能會碰到一系列的問題,尤其是資料量很大的時候,經典的幾個問題如下 一 快取和資料庫間資料一致性問題 分布式環境下 單機就不用說了 非常容易出現快取和資料庫間的資料一致性問題,針對這一點的話,只能說,如果你的專案對快取的要求是強一致性的,...

Redis 快取穿透 快取雪崩

目錄 1.快取穿透 如何避免?如何選擇?2 快取擊穿 如何解決 3.快取雪崩 如何解決?快取穿透 一般的快取系統,都是按照key去快取查詢,如果不存在對應的value,就應該去後端系統查詢 比如db 一些惡意的請求會故意查詢不存在的key,請求量很大,就會對後端系統造成很大的壓力,或導致資料庫異常。...

redis快取穿透 快取雪崩

什麼是快取雪崩 在同一時間內大量的快取資料失效,大量的請求都會去資料庫查詢,造成快取雪崩。解決方法 這個沒有完美的解決方法,但是可以分析使用者行為,盡量讓失效時間點均勻分布,還有就是在快取失效後,通過加鎖或者佇列來控制讀資料庫寫快取的執行緒數量,比如對某國key只允許乙個執行緒查詢資料庫和快取,其他...