6 種常見的緩存策略,請享用!

緩存(Cache)策略在計算機系統中起着至關重要的作用,它們決定了數據如何在存儲層次結構中流動和被管理,緩存策略的選擇可以顯著影響系統的性能、可靠性和複雜性。這篇文章,我們來分析 6 種常見的緩存策略:

  1. Read Through(讀取穿透)

  2. Cache Aside(緩存旁路)

  3. Write Through(直寫)

  4. Write Around(繞過緩存寫)

  5. Write Back(回寫)

  6. Refresh-ahead(預刷新)

Read Through

Read Through 緩存策略是一種同步讀取策略,在這種策略中,當應用程序需要讀取數據時,首先查詢緩存,如果緩存中沒有所需的數據(即緩存未命中),緩存系統會自動從底層數據存儲(如數據庫)中讀取數據,並將其存入緩存中,然後返回給應用程序。其模型如下圖:

優點

缺點

適用場景

Cache Aside

Cache Aside(也稱爲 Lazy Loading 或 Lazy Caching)策略要求應用程序顯式地管理緩存。應用程序首先檢查緩存,如果未命中,則從底層數據存儲中讀取數據,並將其放入緩存中供下次使用。其模型如下圖:

優點

缺點

適用場景

Write Through

Write Through 策略是一種同步寫入策略,當應用程序對數據進行更新時,數據會同時寫入緩存和底層數據存儲,這確保了緩存和數據存儲的一致性。其模型如下圖:

優點

缺點

適用場景

Write Around

Write Around 策略是一種變體的寫入策略,當數據被更新時,僅更新底層數據存儲,而不更新緩存,緩存的數據只有在被讀取時纔會更新。其模型如下圖:

優點

缺點

適用場景

Write Back

Write Back 策略是一種異步寫入策略,當應用程序更新數據時,僅更新緩存,緩存中的數據會在一段時間後(或滿足特定條件時)批量寫入底層數據存儲。其模型如下圖:

優點

缺點

適用場景

Refresh-ahead

Refresh-ahead 是一種緩存預取策略,旨在提高系統的響應速度,尤其是在可預測的訪問場景下,與其他緩存策略的被動性不同,refresh-ahead 通過主動預測未來可能會被訪問的數據,提前從主存儲載入緩存中,從而減少未來請求時的緩存未命中率(Cache Miss)。其模型如下圖:

優點

缺點

使用場景

綜合分析

在選擇緩存策略時,需要根據具體的應用場景和需求進行權衡,以下是一些日常開發中經常需要考慮的因素:

總結

本文,我們分析了 6 種常見的緩存策略,也是在我們日常開發中經常使用的策略,關於緩存策略的選擇應根據具體的應用需求、系統架構以及性能目標進行評估和優化。在實際應用中,我們可能只使用其中的某一種,也可以需要結合多種策略,最終如何選擇,需要根據實際業務情況而定,最後我們再回顧下 6 種策略:

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/ilRpviACZlxdfTLTx-pZBA