日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
CacheAsidePattern(緩存模式)解析

在《究竟先操作緩存,還是數(shù)據(jù)庫(kù)?》,有同學(xué)在評(píng)論提出,相關(guān)方案違背了“Cache Aside Pattern”的原則,故今天聊一聊Cache Aside Pattern。

網(wǎng)站建設(shè)公司,為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及定制網(wǎng)站建設(shè)服務(wù),專(zhuān)注于成都企業(yè)網(wǎng)站建設(shè),高端網(wǎng)頁(yè)制作,對(duì)水電改造等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。專(zhuān)業(yè)網(wǎng)站設(shè)計(jì),網(wǎng)站優(yōu)化推廣哪家好,專(zhuān)業(yè)seo優(yōu)化優(yōu)化,H5建站,響應(yīng)式網(wǎng)站。

另外,在討論技術(shù)方案時(shí),盡量不說(shuō):

  • “你是錯(cuò)的,應(yīng)該怎么樣”
  • “facebook不是這樣,所以你是錯(cuò)的”

畫(huà)外音:憑什么facebook就是真理?它的方案只是適合它的業(yè)務(wù)而已。

說(shuō)明適用場(chǎng)景,說(shuō)明來(lái)龍去脈,說(shuō)明前因后果,比具體使用什么方案更重要。

什么是“Cache Aside Pattern”?

答:旁路緩存方案的經(jīng)驗(yàn)實(shí)踐,這個(gè)實(shí)踐又分讀實(shí)踐,寫(xiě)實(shí)踐。

對(duì)于讀請(qǐng)求

  • 先讀cache,再讀db
  • 如果,cache hit,則直接返回?cái)?shù)據(jù)
  • 如果,cache miss,則訪問(wèn)db,并將數(shù)據(jù)set回緩存

如上圖:

  • 先從cache中嘗試get數(shù)據(jù),結(jié)果miss了
  • 再?gòu)膁b中讀取數(shù)據(jù),從庫(kù),讀寫(xiě)分離
  • ***把數(shù)據(jù)set回cache,方便下次讀***

畫(huà)外音:這一點(diǎn)上,與《究竟先操作緩存,還是數(shù)據(jù)庫(kù)?》說(shuō)的是一致的。

對(duì)于寫(xiě)請(qǐng)求

  • 淘汰緩存,而不是更新緩存
  • 先操作數(shù)據(jù)庫(kù),再淘汰緩存

如上圖:

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

畫(huà)外音:這一點(diǎn)上,與《究竟先操作緩存,還是數(shù)據(jù)庫(kù)?》說(shuō)的不一致,也是評(píng)論反駁比較激烈的地方。

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

畫(huà)外音:這一點(diǎn)上,與《緩存,究竟是淘汰,還是修改?》說(shuō)的是一致的。

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

答:如果更新緩存,在并發(fā)寫(xiě)時(shí),可能出現(xiàn)數(shù)據(jù)不一致。

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

在1和2兩個(gè)并發(fā)寫(xiě)發(fā)生時(shí),由于無(wú)法保證時(shí)序,此時(shí)不管先操作緩存還是先操作數(shù)據(jù)庫(kù),都可能出現(xiàn):

  • 請(qǐng)求1先操作數(shù)據(jù)庫(kù),請(qǐng)求2后操作數(shù)據(jù)庫(kù)
  • 請(qǐng)求2先set了緩存,請(qǐng)求1后set了緩存

導(dǎo)致,數(shù)據(jù)庫(kù)與緩存之間的數(shù)據(jù)不一致。

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

Cache Aside Pattern為什么建議先操作數(shù)據(jù)庫(kù),再操作緩存?

答:如果先操作緩存,在讀寫(xiě)并發(fā)時(shí),可能出現(xiàn)數(shù)據(jù)不一致。

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

在1和2并發(fā)讀寫(xiě)發(fā)生時(shí),由于無(wú)法保證時(shí)序,可能出現(xiàn):

  • 寫(xiě)請(qǐng)求淘汰了緩存
  • 寫(xiě)請(qǐng)求操作了數(shù)據(jù)庫(kù)(主從同步?jīng)]有完成)
  • 讀請(qǐng)求讀了緩存(cache miss)
  • 讀請(qǐng)求讀了從庫(kù)(讀了一個(gè)舊數(shù)據(jù))
  • 讀請(qǐng)求set回緩存(set了一個(gè)舊數(shù)據(jù))
  • 數(shù)據(jù)庫(kù)主從同步完成

導(dǎo)致,數(shù)據(jù)庫(kù)與緩存的數(shù)據(jù)不一致。

所以,Cache Aside Pattern建議,先操作數(shù)據(jù)庫(kù),再操作緩存。

Cache Aside Pattern方案存在什么問(wèn)題?

答:如果先操作數(shù)據(jù)庫(kù),再淘汰緩存,在原子性被破壞時(shí):

  • 修改數(shù)據(jù)庫(kù)成功了
  • 淘汰緩存失敗了

導(dǎo)致,數(shù)據(jù)庫(kù)與緩存的數(shù)據(jù)不一致。

如何解決這類(lèi)問(wèn)題呢?

答:詳見(jiàn)《究竟先操作緩存,還是數(shù)據(jù)庫(kù)?》。

【本文為專(zhuān)欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】


分享標(biāo)題:CacheAsidePattern(緩存模式)解析
本文地址:http://www.5511xx.com/article/dphoocp.html