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

穿透類緩存Cache使用,這一篇就夠了!

開發 開發工具
有些成熟的技術方案,用不著創新,固化下來的模式(pattern),學就完了。例如,穿透類緩存的使用,“Cache Aside Pattern”就是很好的實踐沉淀,故今天聊一聊Cache Aside Pattern。

有些成熟的技術方案,用不著創新,固化下來的模式(pattern),學就完了。例如,穿透類緩存的使用,“Cache Aside Pattern”就是很好的實踐沉淀,故今天聊一聊Cache Aside Pattern。

畫外音:就好像“設計模式”,它就是沉淀下來的設計方法。

[[442060]]

什么是“Cache Aside Pattern”?

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

畫外音:與旁路緩存對應的,是穿透緩存。

讀實踐是怎么樣的?

對于讀請求:

(1)先讀cache,再讀db;

(2)如果,cache hit,則直接返回數據;

(3)如果,cache miss,則訪問db,并將數據set回緩存;

如上圖:

(1)先從cache中嘗試get數據,結果miss了;

(2)再從db中讀取數據,從庫,讀寫分離;

(3)最后把數據set回cache,方便下次讀命中;

寫實踐是怎么樣的?

對于寫請求:

(1)淘汰緩存,而不是更新緩存;

(2)先操作數據庫,再淘汰緩存;

如上圖:

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

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

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

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

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

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

(1)請求1先操作數據庫,請求2后操作數據庫;

(2)請求2先set了緩存,請求1后set了緩存;

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

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

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

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

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

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

(1)寫請求淘汰了緩存;

(2)寫請求操作了數據庫(主從同步沒有完成);

(3)讀請求讀了緩存(cache miss);

(4)讀請求讀了從庫(讀了一個舊數據);

(5)讀請求set回緩存(set了一個舊數據);

(6)數據庫主從同步完成;

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

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

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

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

(1)修改數據庫成功了;

(2)淘汰緩存失敗了;

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

Cache Aside Pattern總結:

對于讀請求:

(1)先讀cache,再讀db;

(2)如果,cache hit,則直接返回數據;

(3)如果,cache miss,則訪問db,并將數據set回緩存;

對于寫請求:

(1)淘汰緩存,而不是更新緩存;

(2)先操作數據庫,再淘汰緩存;

任何技術方案的設計,都是折衷。

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

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

 

 

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

2023-02-10 09:04:27

2019-04-02 10:51:29

瀏覽器緩存前端

2020-08-03 10:00:11

前端登錄服務器

2023-04-24 08:00:00

ES集群容器

2019-12-30 11:25:06

Jvm運行java

2019-08-13 15:36:57

限流算法令牌桶

2022-08-01 11:33:09

用戶分析標簽策略

2023-09-11 08:13:03

分布式跟蹤工具

2021-04-08 07:37:39

隊列數據結構算法

2020-02-18 16:20:03

Redis ANSI C語言日志型

2022-06-20 09:01:23

Git插件項目

2020-05-14 16:35:21

Kubernetes網絡策略DNS

2023-09-04 08:00:00

開發Java線程

2017-03-11 22:19:09

深度學習

2022-04-07 10:39:21

反射Java安全

2024-04-10 08:22:44

2021-03-03 14:55:10

開發MySQL代碼

2020-03-09 17:28:51

NoSQLMongoDB數據庫

2023-11-18 09:30:42

模型AI

2020-07-03 08:21:57

Java集合框架
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚州综合在线 | 日韩一区二区三区在线观看 | 亚洲精品一区二区三区蜜桃久 | 一本色道久久综合亚洲精品高清 | 日日干日日操 | 中文一区二区 | 中文在线а√在线8 | 一级视频黄色 | 99综合| 久久国产精品亚洲 | 久久99这里只有精品 | 一区二区三区四区国产 | 亚洲最大的黄色网址 | 精品一区二区三区在线观看国产 | 免费高潮视频95在线观看网站 | 欧美黄视频 | 亚洲成人一级 | 成人精品一区亚洲午夜久久久 | 国产成人久久精品一区二区三区 | 日韩成人 | 午夜视频网 | 亚洲一区二区三区在线 | 久草在线 | 亚洲日本一区二区三区四区 | 一区二区三区精品视频 | 国产一区二区三区亚洲 | 一区二区三区在线看 | 中文字幕专区 | 四虎影院免费在线 | 国产精品久久久久久久午夜片 | 成人av播放 | 午夜视频网站 | 日韩美女一区二区三区在线观看 | 特黄小视频 | 美女国内精品自产拍在线播放 | 最新国产在线 | 中文字幕综合在线 | 99热视| 久久久久国产精品免费免费搜索 | 成人精品免费视频 | 国产免费一区 |