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

高并發緩存策略大揭秘:面試必備的緩存更新模式解析

開發 架構
Write Behind模式和Write Through模式整個架構是一樣的,核心在于write through在緩存數據庫中的更新是同步的,而Write Behind是異步的。

在高并發場景中,緩存能抵擋大量數據庫查詢,減少數據庫壓力,對于緩存更新通常有以下幾種模式可以選擇:

? cache aside

? read/write through

? write behind caching

cache aside模式

Cache-aside模式是一種常用的用于管理緩存的模式。它用于確保緩存與底層數據源之間的數據一致性。以下是cache-aside模式的工作原理:

圖片圖片

1. 從緩存讀取:當有讀取操作請求時,應用程序首先檢查緩存中是否存在數據。如果在緩存中找到了數據,則將其返回給調用者,避免了訪問底層數據源的需要。

2. 緩存未命中:如果在緩存中未找到數據,則表示緩存未命中。在這種情況下,應用程序從底層數據源檢索數據,并將檢索到的數據填充到緩存中。

3. 更新數據:當對數據執行寫入或更新操作時,應用程序首先更新底層數據源中的數據。然后,清除緩存中的數據,以確保下一次讀取從數據源中檢索到更新后的數據。

通常寫緩存和寫數據庫是兩個獨立的事務,選擇先更新緩存還是先更新數據庫都有可能產生數據不一致的情況。

先刪緩存,再更新數據庫的問題

假設有兩個請求A、B。

? 請求A先刪除緩存,此時還未更新數據庫

? 請求B查詢緩存未命中,然后查詢數據庫,查出舊數據寫入緩存

? 請求A繼續將數據寫入數據庫

? 此時緩存與數據庫中的數據出現了不一致的情況

將緩存更新不做刪除的問題

? 請求A先更新了數據庫

? 請求B更新了數據庫,并更新了緩存

? 請求A最后更新緩存,此時請求A的數據是臟數據。

先更新DB再失效緩存問題

先更新DB,再失效緩存也會出現問題。

? 請求A讀取緩存未命中,查詢數據庫成功查到數據

? 請求B進來更新數據庫成功,并刪除緩存數據

? 請求A將查詢的數據寫入到緩存中,此時請求A寫入緩存的數據已經是臟數據

read/write through模式

cache aside模式需要應用方維護緩存的讀寫,對數據和緩存的維護設計侵入代碼,代碼復雜性增加。read/write through模式彌補了這一問題,調用方無需管理緩存和數據庫調用,通過抽象緩存管理組件維護緩存和數據庫的讀寫,解耦業務代碼。

read through模式

當客戶端請求一個數據時,如果緩存中不存在該項(緩存未命中),緩存系統會自動從后端存儲中加載數據,然后將其添加到緩存中,并返回給客戶端。對于后續的相同請求,數據則直接從緩存中獲取,直到緩存過期或被淘汰。

圖片圖片

write through模式

在write-through模式中,當客戶端更新一個數據項時,緩存系統會同時更新緩存和后端存儲。這意味著所有的寫操作都會同步地寫入緩存和存儲,確保二者的數據一致性。

圖片圖片

write behind caching模式

Write Behind模式和Write Through模式整個架構是一樣的,核心在于write through在緩存數據庫中的更新是同步的,而Write Behind是異步的。

每次的請求寫都是直接更新緩存然后就成功返回,并沒有同步把數據更新到數據庫。而把更新到數據庫的過程稱為flush,觸發flush的條件可自定義,如定時或達到一定容量閾值時進行flush操作。并且可以實現批量寫,合并寫等策略,也有效減少了更新數據的頻率,這種模式最大的好處就是讀寫響應非常快,吞吐量也會明顯提升。這種模式也有其他的問題,比如數據不是強一致性的,因為把最新的數據放在緩存里,如果緩存在flush到數據庫之前宕機了就會丟失數據,另外實現也比較復雜。

幾種模式對

模式

優點

缺點

Cache Aside

實現比較簡單

需要應用程序負責緩存的讀取和寫入操作,代碼侵入較大

Read/Write Through

引入緩存管理組件,緩存和數據庫的維護對應用程序透明;應用代碼入侵小,邏輯更清晰

引入緩存管理組件,實現更復雜

Write Behind Caching

讀寫直接和緩存交互,異步批量更新數據


責任編輯:武曉燕 來源: 半畝方塘立身
相關推薦

2018-07-06 15:04:24

緩存token線程

2018-10-23 10:47:03

高并發系統緩存

2018-10-24 14:30:30

緩存服務更新

2022-05-10 08:58:56

CacheHTTP

2023-08-01 07:22:25

高并發系統故障

2016-11-28 09:00:10

瀏覽器瀏覽器緩存服務端

2021-01-13 05:23:27

緩存數據庫高并發

2018-07-14 21:59:57

緩存數據庫數據

2017-12-27 12:01:39

2021-03-29 11:51:07

緩存儲存數據

2020-08-27 08:17:05

緩存高并發系統

2017-12-12 14:51:15

分布式緩存設計

2019-01-24 09:42:55

系統高并發面試

2021-06-05 09:01:01

Redis緩存雪崩緩存穿透

2017-02-20 07:47:04

緩存HASH高并發

2018-07-27 10:56:10

2023-11-16 08:22:14

LruCacheAndroid

2015-10-08 16:40:50

緩存頭像策略

2019-06-06 10:55:02

JDK高并發框架

2019-10-17 16:02:44

高并發緩存瀏覽器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天操天天干天天爽 | 超碰人人人人 | 91精品国产综合久久精品 | 成年人黄色一级毛片 | 亚洲欧美日韩在线不卡 | 欧美日韩一区二区电影 | av中文网| 午夜精品一区二区三区免费视频 | 自拍第一页 | 亚洲一区中文字幕 | 一区二区三区国产精品 | 久久综合久久自在自线精品自 | 国产精品自产拍在线观看蜜 | 欧洲一级黄 | av毛片| 欧美韩一区二区 | 色婷婷久久久久swag精品 | 中文字幕国产 | 美国一级片在线观看 | 久久久久久免费毛片精品 | 一本大道久久a久久精二百 国产成人免费在线 | 欧美1区2区 | 日韩爱爱网 | 在线国产中文字幕 | 午夜伦4480yy私人影院 | 日韩精品一区二区三区视频播放 | 亚洲天堂精品一区 | 国产激情精品一区二区三区 | 欧美精品网站 | 国产精品国产 | 亚洲1区 | 一级免费毛片 | 日本免费一区二区三区 | 在线91| 性视频网| 午夜男人天堂 | av看片网站 | 欧美性一区二区三区 | 性高湖久久久久久久久aaaaa | 久久久久久综合 | 伊人婷婷|