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

究竟先操作緩存,還是數(shù)據(jù)庫?

開發(fā) 開發(fā)工具 前端
緩存存儲(chǔ),也是數(shù)據(jù)的冗余,這些,是緩存的核心讀加速原理。 但是,一旦沒有命中緩存,或者一旦涉及寫操作,流程會(huì)比沒有緩存更加復(fù)雜,這些是今天要分享的話題。

緩存存儲(chǔ),也是數(shù)據(jù)的冗余。

  • 數(shù)據(jù)庫訪問數(shù)據(jù),磁盤IO,慢;
  • 緩存里訪問數(shù)據(jù),存操作,快;
  • 數(shù)據(jù)庫里的熱數(shù)據(jù),可在緩存冗余一份;
  • 先訪問緩存,如果***,能大大的提升訪問速度,降低數(shù)據(jù)庫壓力;

這些,是緩存的核心讀加速原理。

但是,一旦沒有***緩存,或者一旦涉及寫操作,流程會(huì)比沒有緩存更加復(fù)雜,這些是今天要分享的話題。

[[236513]]

讀操作,如果沒有***緩存,流程是怎么樣的?

答:如下圖所示

  • 嘗試從緩存get數(shù)據(jù),結(jié)果沒有***;
  • 從數(shù)據(jù)庫獲取數(shù)據(jù),讀從庫,讀寫分離;
  • 把數(shù)據(jù)set到緩存,未來能夠***緩存;

讀操作的流程應(yīng)該沒有歧義。

寫操作,流程是怎么樣的?

答:寫操作,既要操作數(shù)據(jù)庫中的數(shù)據(jù),又要操作緩存里的數(shù)據(jù)。

這里,有兩個(gè)方案:

  • 先操作數(shù)據(jù)庫,再操作緩存;
  • 先操作緩存,再操作數(shù)據(jù)庫;

并且,希望保證兩個(gè)操作的原子性,要么同時(shí)成功,要么同時(shí)失敗。

這演變?yōu)橐粋€(gè)分布式事務(wù)的問題,保證原子性十分困難,很有可能出現(xiàn)一半成功,一半失敗,接下來看下,當(dāng)原子性被破壞的時(shí)候,分別會(huì)發(fā)生什么。

一、先操作數(shù)據(jù)庫,再操作緩存

如上圖,正常情況下:

  • 先操作數(shù)據(jù)庫,成功;
  • 再操作緩存(delete或者set),也成功;

但如果這兩個(gè)動(dòng)作原子性被破壞:***步成功,第二步失敗,會(huì)導(dǎo)致,數(shù)據(jù)庫里是新數(shù)據(jù),而緩存里是舊數(shù)據(jù),業(yè)務(wù)無法接受。

畫外音:如果***步就失敗,可以返回調(diào)用方50X,不會(huì)出現(xiàn)數(shù)據(jù)不一致。

二、先操作緩存,再操作數(shù)據(jù)庫

如上圖,正常情況下:

  • 先操作緩存(delete或者set),成功;
  • 再操作數(shù)據(jù)庫,也成功;

畫外音:如果***步就失敗,也可以返回調(diào)用方50X,不會(huì)出現(xiàn)數(shù)據(jù)不一致。

如果原子性被破壞,會(huì)發(fā)生什么呢?

這里又分了兩種情況:

  • 操作緩存使用set
  • 操作緩存使用delete

使用set的情況:***步成功,第二步失敗,會(huì)導(dǎo)致,緩存里是set后的數(shù)據(jù),數(shù)據(jù)庫里是之前的數(shù)據(jù),數(shù)據(jù)不一致,業(yè)務(wù)無法接受。

并且,一般來說,數(shù)據(jù)最終以數(shù)據(jù)庫為準(zhǔn),寫緩存成功,其實(shí)并不算成功。

使用delete的情況:***步成功,第二步失敗,會(huì)導(dǎo)致,緩存里沒有數(shù)據(jù),數(shù)據(jù)庫里是之前的數(shù)據(jù),數(shù)據(jù)沒有不一致,對(duì)業(yè)務(wù)無影響。只是下一次讀取,會(huì)多一次cache miss。

畫外音:此時(shí)可以返回調(diào)用方50X。

最終,先操作緩存,還是先操作數(shù)據(jù)庫?

答:

(1) 讀請(qǐng)求,先讀緩存,如果沒有***,讀數(shù)據(jù)庫,再set回緩存

(2) 寫請(qǐng)求

  • 先緩存,再數(shù)據(jù)庫
  • 緩存,使用delete,而不是set

畫外音:《緩存,究竟是淘汰,還是修改?》也提到了,淘汰緩存還是修改緩存的建議。

希望大家有收獲,有不同方案歡迎討論。

末了,挖個(gè)坑:

在緩存讀取流程中,如果主從沒有同步完成,步驟二讀取到一個(gè)舊數(shù)據(jù),可能導(dǎo)致緩存里set一個(gè)舊數(shù)據(jù),最終導(dǎo)致數(shù)據(jù)庫和緩存數(shù)據(jù)不一致。

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

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

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2023-12-27 13:44:00

數(shù)據(jù)庫系統(tǒng)分布式

2021-03-19 07:40:22

緩存數(shù)據(jù)庫日志

2021-01-29 10:51:48

高并發(fā)數(shù)據(jù)庫緩存

2021-01-13 05:23:27

緩存數(shù)據(jù)庫高并發(fā)

2019-12-24 09:12:10

運(yùn)維架構(gòu)技術(shù)

2025-06-12 09:16:54

2024-12-16 08:01:57

2020-09-04 06:32:08

緩存數(shù)據(jù)庫接口

2018-07-05 16:15:26

緩存數(shù)據(jù)cache miss

2018-07-15 08:18:44

緩存數(shù)據(jù)庫數(shù)據(jù)

2018-07-14 21:59:57

緩存數(shù)據(jù)庫數(shù)據(jù)

2019-07-11 08:45:00

MySQL數(shù)據(jù)庫緩存

2018-03-28 09:26:43

數(shù)據(jù)庫緩存層優(yōu)化

2010-09-27 14:54:38

SQL數(shù)據(jù)庫

2010-08-31 16:53:54

DHCP數(shù)據(jù)庫

2011-09-21 14:06:16

數(shù)據(jù)庫MongoDB

2009-07-31 09:57:47

ASP.NET數(shù)據(jù)庫緩

2009-12-22 17:24:22

ADO.NET數(shù)據(jù)庫

2021-02-05 10:58:28

數(shù)據(jù)存儲(chǔ)架構(gòu)

2024-05-08 08:37:44

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: av一级毛片| 四虎影院久久 | 精品亚洲一区二区三区 | 成人在线视频一区二区三区 | 国产在线一区二区三区 | 视频一区在线观看 | 久久综合久久久 | 日韩福利片 | 国产一区二区精品在线 | 久久高清精品 | 久久久久久免费毛片精品 | 超碰av在线 | 亚洲欧美视频一区 | 成年人在线观看 | 亚洲日本一区二区三区四区 | 粉嫩国产精品一区二区在线观看 | 国产欧美精品一区二区色综合 | 免费一区二区三区 | 欧美二区三区 | 亚洲人久久 | 天堂成人国产精品一区 | 中文字幕亚洲欧美 | 日韩免费av| 99精品一区二区三区 | 日韩一区二区久久 | 久久国产成人 | 91高清在线| 网色| 亚洲第1页| 国产2区| 久久精品亚洲 | 亚洲精品一区二三区不卡 | 久久久久免费精品国产 | 香蕉一区| 日韩精品一区二区三区中文在线 | 本道综合精品 | 黄色在线观看网站 | 欧美一级在线 | 久久亚洲国产精品日日av夜夜 | 欧美福利视频一区 | 欧美日韩在线免费 |