成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Cache Aside Pattern(緩存模式)解析

開發 開發工具 前端
在《究竟先操作緩存,還是數據庫?》,有同學在評論提出,相關方案違背了“Cache Aside Pattern”的原則,故今天聊一聊Cache Aside Pattern。

在《究竟先操作緩存,還是數據庫?》,有同學在評論提出,相關方案違背了“Cache Aside Pattern”的原則,故今天聊一聊Cache Aside Pattern。

[[236538]]

另外,在討論技術方案時,盡量不說:

  • “你是錯的,應該怎么樣”
  • “facebook不是這樣,所以你是錯的”

畫外音:憑什么facebook就是真理?它的方案只是適合它的業務而已。

說明適用場景,說明來龍去脈,說明前因后果,比具體使用什么方案更重要。

什么是“Cache Aside Pattern”?

答:旁路緩存方案的經驗實踐,這個實踐又分讀實踐,寫實踐。

對于讀請求

  • 先讀cache,再讀db
  • 如果,cache hit,則直接返回數據
  • 如果,cache miss,則訪問db,并將數據set回緩存

如上圖:

  • 先從cache中嘗試get數據,結果miss了
  • 再從db中讀取數據,從庫,讀寫分離
  • ***把數據set回cache,方便下次讀***

畫外音:這一點上,與《究竟先操作緩存,還是數據庫?》說的是一致的。

對于寫請求

  • 淘汰緩存,而不是更新緩存
  • 先操作數據庫,再淘汰緩存

如上圖:

(1)***步要操作數據庫,第二步操作緩存

畫外音:這一點上,與《究竟先操作緩存,還是數據庫?》說的不一致,也是評論反駁比較激烈的地方。

(2)緩存,采用delete淘汰,而不是set更新

畫外音:這一點上,與《緩存,究竟是淘汰,還是修改?》說的是一致的。

Cache Aside Pattern為什么建議淘汰緩存,而不是更新緩存?

答:如果更新緩存,在并發寫時,可能出現數據不一致。

如上圖所示,如果采用set緩存。

在1和2兩個并發寫發生時,由于無法保證時序,此時不管先操作緩存還是先操作數據庫,都可能出現:

  • 請求1先操作數據庫,請求2后操作數據庫
  • 請求2先set了緩存,請求1后set了緩存

導致,數據庫與緩存之間的數據不一致。

所以,Cache Aside Pattern建議,delete緩存,而不是set緩存。

Cache Aside Pattern為什么建議先操作數據庫,再操作緩存?

答:如果先操作緩存,在讀寫并發時,可能出現數據不一致。

如上圖所示,如果先操作緩存。

在1和2并發讀寫發生時,由于無法保證時序,可能出現:

  • 寫請求淘汰了緩存
  • 寫請求操作了數據庫(主從同步沒有完成)
  • 讀請求讀了緩存(cache miss)
  • 讀請求讀了從庫(讀了一個舊數據)
  • 讀請求set回緩存(set了一個舊數據)
  • 數據庫主從同步完成

導致,數據庫與緩存的數據不一致。

所以,Cache Aside Pattern建議,先操作數據庫,再操作緩存。

Cache Aside Pattern方案存在什么問題?

答:如果先操作數據庫,再淘汰緩存,在原子性被破壞時:

  • 修改數據庫成功了
  • 淘汰緩存失敗了

導致,數據庫與緩存的數據不一致。

如何解決這類問題呢?

答:詳見《究竟先操作緩存,還是數據庫?》。

【本文為51CTO專欄作者“58沈劍”原創稿件,轉載請聯系原作者】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2023-08-03 08:52:10

緩存數據逐出數據

2009-09-22 10:50:04

Hibernate c

2012-08-27 10:52:20

.NET架構觀察者模式

2021-12-01 07:38:27

設計模式規格模式Specificati

2024-08-29 08:28:17

2019-08-16 10:46:46

JavaScript工廠模式抽象工廠模式

2021-11-29 09:38:12

設計模式對象池模式Object Pool

2021-06-29 19:26:29

緩存Spring CachSpring

2023-05-05 18:38:33

多級緩存Caffeine開發

2024-03-14 08:57:04

高并發緩存更新

2024-07-31 10:41:16

C#設計模式

2012-08-22 10:10:25

單態單態設計設計模式

2011-12-10 19:17:12

webOS

2010-09-26 08:46:06

HTML 5Cache Manif

2014-11-04 10:34:27

JavaCache

2024-02-19 08:38:34

建造者模式Android設計模式

2021-03-30 10:50:18

Linux內存命令

2020-12-23 13:14:00

LinuxLinux內存Swap

2018-11-30 15:17:38

CPUCache緩存行

2023-10-30 07:56:46

Spring緩存
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产精品久久久久秋霞不卡 | 久久天堂| av片免费 | 欧美国产免费 | 亚洲精品日韩在线 | 成人在线视频观看 | 精品一区二区三区在线视频 | 伊人久操 | 免费国产一区 | 欧美国产免费 | 欧美日韩高清一区 | 久久久久久免费毛片精品 | 久草免费在线 | 国产亚洲欧美在线 | 不卡在线视频 | 国产一区二区久久 | 久久久99国产精品免费 | 黄色在线免费观看 | 日韩福利视频 | 最新高清无码专区 | 天堂一区二区三区 | 色888www视频在线观看 | 欧美日韩一卡 | 久久久久国 | 日本成人午夜影院 | 久热爱 | 国产区在线 | 国产在线拍偷自揄拍视频 | 国产成人区 | 91 视频网站 | 国产精品久久 | 中文字幕免费在线 | 日韩精品视频网 | 国产一级视频免费播放 | 精品乱人伦一区二区三区 | 91久久网站| 国产98色在线 | 日韩 | 欧美a在线 | 九九色综合 | 丝袜 亚洲 欧美 日韩 综合 | 国产成人亚洲精品 |