如何保證緩存一致性?

參考資料:《Redis開發與運維》

何爲緩存不一致?

緩存層與存儲層在一定時間窗口內存在數據不一致的情況,稱此爲緩存不一致。

緩存中的數據通常是有生命週期的,需要在指定的時間後更新或刪除,這樣就可以保證緩存空間在一個可控的範圍之內。Redis對此提供了一些策略來更新數據。

算法剔除

Redis提供了一些更新算法,LRU、LFU等等。

使用場景:通常應用於緩存使用量超過了預設的最大值的時候,對現有的數據進行剔除。例如Redis使用maxmemory-policy配置了內存的最大使用值。

一致性較差,但是運維成本低,只需簡單配置即可。

超時剔除

使用場景:通過給緩存數據設置過期時間,讓其在過期後自動刪除。

一致性較差(如果應用方接受在一定時間窗口內緩存數據不一致),運維成本低,設置過期時間即可。

主動更新

使用場景:應用方對數據一致性要求比較高,需要在真實數據更新後,立即更新緩存中的數據。(可以藉助MQ解耦)

一致性較高,運維成本也高。需要對主動更新機制進行代碼開發。

最佳實踐

1.低一致性業務,直接配置maxmemory-policy即可,或設置過期時間。

2.高一致性業務,超時剔除+主動更新聯合使用,已確保在主動更新失敗的情況下,緩存最終由於過期依然會更新數據。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章