旁路快取(Cache-aside)
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)總結

關注公眾號: 程式新視界 ,一個讓你軟實力、硬技術同步提升的平臺
除非註明,否則均為程式新視界原創文章,轉載必須以連結形式標明本文連結
「其他文章」
- 面試被問Linux 命令su和sudo的區別?
- 到底如何保證執行緒安全,你真的清楚嗎?(乾貨推薦)
- 【drools系列】1、什麼是規則引擎?
- 旁路快取(Cache-aside)
- 三種經典的快取使用模式
- 快取模式(Cache Aside、Read Through、Write Through、Write Behind)
- WildFly – 用於Linux的新的改進的JBoss應用程式伺服器
- WildFly(JBoss AS) – 如何使用GUI訪問和管理CLI
- MySQL資料庫表被鎖、解鎖,刪除事務
- 使用HTTP Client踩到的一個坑
- git建立本地分支,推送到遠端
- mysql explain中key_len含義及計算
- Maven常見操作命令
- maven專案構建error in opening zip file
- jackson Unable to process Jar entry [module-info.class] from Jar
- log4j日誌按日期拆分壓縮及按大小拆分壓縮
- Linux壓縮日誌並檢視tar gz壓縮包內容
- Drools規則引擎中資料庫與規則模板生成DRL規則檔案
- Drools規則引擎使用AgendaFilter觸發指定規則會校驗所有規則
- Nginx Tomcat負載均衡宕機自動切換