緩存與置換:概覽
Published: Tue Feb 17 2026 | Modified: Sat Feb 07 2026 , 1 minutes reading.
緩存與置換:速度的背包
記憶的物理學
想像妳是一名在工作台前工作的木匠。妳的腰間繫著一個 工具帶 (緩存/Cache),而後院裡有一個巨大的 工具棚 (硬碟/Hard Drive)。
- 工具帶: 它很小,只能掛 5 件工具。但妳只需 1 秒鐘就能拿到錘子。
- 工具棚: 它無限大,裝著妳擁有的所有東西。但走過去拿個電鑽需要 10 分鐘。
緩存的目標很簡單:把妳此刻需要的工具留在腰帶上。 但腰帶容量有限。當妳需要第 6 件工具時,妳必須做出一個艱難的決定:我該把腰帶上的哪件工具拿下來,給新工具騰出位置?
這個決定——即「置換策略 (Eviction Policy)」——正是區分快系統與慢系統的關鍵。
生存的策略
在本章中,我們將探索關於「誰有資格留下」的不同哲學:
| 策略 | 靈魂 / 隱喻 | 代表演算法 | 最佳應用場景 |
|---|---|---|---|
| 近況 (Recency) | 實用主義者 「如果妳最近沒派上用場,妳就出局。」 | LRU (最近最少使用) | 通用場景 大多數現實存取模式(如瀏覽歷史)。 |
| 頻率 (Frequency) | 歷史學家 「我不關心最近;我只在乎忠誠度。」 | LFU (最不經常使用) | 靜態熱度 那些總是很熱門的東西(如 Google Logo)。 |
| 公平 (Fairness) | 官僚主義者 「先來後到,概無例外。」 | FIFO (先進先出) | 簡單場景 緩衝區和訊息佇列。 |
| 平衡 (Balance) | 大戰略家 動態平衡「近況」與「頻率」。 | ARC (自適應置換緩存) | 複雜負載 資料庫與檔案系統 (ZFS)。 |
緩存的三大法則
- 局部性原理 (Locality): 程式(和人類)是可以預測的。如果妳存取了數據 X,妳很可能很快再次存取 X(時間局部性),或者存取 X 的鄰居(空間局部性)。
- 命中率 (Hit Rate): 這是唯一重要的指標。如果妳的緩存能響應 90% 的請求,系統就是快的。如果只有 10%,那無論妳的代碼優化得再好,系統也是慢的。
- 一致性 (Coherence): 電腦科學中只有兩件難事:緩存失效 (Cache Invalidation) 和命名。當「工具棚」裡的東西變了,如何保持「工具帶」上的東西同步,是終極的頭痛難題。
小結
在本章中,我們將學習如何構建「雖然小但比誰都聰明」的儲存系統。我們將發現,所謂的「智慧」,往往只是基於過去預測未來的能力。
讓我們從最著名的演算法開始:LRU。
