旁路快取(Cache-aside)

語言: CN / TW / HK

1)什麼是旁路快取

旁路快取策略以資料庫(Hbase,redis)中的資料為準,快取中的資料是按需載入的,它可以分為讀策略和寫策略。

讀策略:

從快取中讀取資料;如果快取命中,則直接返回資料;如果快取不命中,則從資料庫中查詢資料;查詢到資料後,將資料寫入到快取中,並且返回給使用者。

寫策略:

更新資料庫中(HBASE,Redis)的記錄;刪除快取記錄。

2)快取和資料庫的資料一致性問題

錯誤一:先失效快取,後更新資料庫

1)請求A刪除快取資料

2)請求B查詢快取,未命中

3)請求B往資料庫中查詢,結果為20,通過快取更新為20

4)請求A將資料庫中的資料更新為30

錯誤二:快取的寫入快於資料庫的寫入

原因是快取的寫入遠遠快於資料庫的寫入,所以在實際中很難出現請求B已經更新了資料庫並且清空了快取,請求A才更新完快取的情況。而一旦請求A早於請求B清空快取之前更新了快取,那麼接下來的請求就會因為快取為空而從資料庫中重新載入資料,所以不會出現這種不一致的情況

1)請求A讀快取快取未命中

2)請求A讀資料庫中的值20

3)請求B將資料庫更新為30

4)請求A將快取更新為20

3)總結

關注公眾號: 程式新視界 ,一個讓你軟實力、硬技術同步提升的平臺

除非註明,否則均為程式新視界原創文章,轉載必須以連結形式標明本文連結