快取穿透
快取系統,按照
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只允許乙個執行緒查詢資料庫和快取,其他...