Try   HackMD

iFactory Cache簡介

langchain中有使用到的cache
all = (
"FIFOCache",
"LFUCache",
"LRUCache",
"MRUCache",
"RRCache",
"TLRUCache",
"TTLCache",
)

First In First Out (FIFO) cache

FIFO 是最簡單的快取策略,先加到快取的資料將先被刪除。

Least Frequently Used (LFU) cache

最不常用(LFU)緩存是一種緩存替換策略,該策略根據每個項目被訪問的頻率來進行替換。當需要替換緩存中的項目時,LFU緩存會選擇被訪問次數最少的項目進行替換。
這種策略的思想是優先保留那些被訪問頻率較高的項目,因為這些項目更有可能在未來繼續被訪問。LFU緩存可以避免過於頻繁地替換那些可能是系統常見的、但不是最近使用的項目。
舉例來說,如果你是一個讀者,LFU緩存就像是在圖書館中選擇借閱次數最少的書籍,這樣就能確保那些不太受歡迎但可能在未來被讀者讀取的書籍有機會被保留在書架上。

Least Recently Used (LRU) cache

目前M9工廠使用此cache
LRU 的做法非常簡單:對於現在所有已經在記憶體裡面的資源,記錄他們最近一次被用到的時間。當要選擇丟掉誰的時候,選取最近使用時間距離當下最遠的那一個。

Most Recently Used (MRU) cache

MRU(Most Recently Used)緩存是一種緩存機制,用於存儲最近訪問的項目或數據,以加速對這些項目的未來訪問速度。其核心思想是,如果一個項目最近被訪問過,那麼很可能會很快再次被訪問。通過保留緩存中最近使用的有限數量項目,可以提高訪問速度和整體系統性能。
可以將其比擬為擁有一個用於存放經常使用物品的快速訪問抽屜。物品被最近使用的次數越多,就越有可能很快再次被使用,因此將其保留在易於訪問的抽屜中,而不是將其藏在難以到達的地方。
Demo時使用此模式?

Random Replacement (RR) cache

隨機替換(RR)緩存是另一種緩存替換策略,與最近使用(MRU)相反。在RR緩存中,當需要替換緩存中的項目時,系統隨機選擇一個項目進行替換,而不考慮該項目是否最近被使用。
這種策略的思想是保持替換過程的隨機性,以期望在不同情況下都能夠有效地處理緩存替換,防止過於頻繁地替換最近使用的項目而導致性能下降。
想像一下,這就像是一個糖果袋子,每當你想要拿出一顆糖果時,你隨機選擇一顆,而不是總是選擇同一顆。這樣可以確保每顆糖果都有機會被選中,而不是只有最近放進去的那顆。

LRU Cache implementation with per-item time-to-live (TTL)

LRU(Least Recently Used)緩存與每個項目的生存時間(TTL)值的實現,是通過將每個緩存項目與其最後訪問時間和過期時間相關聯來實現的。
LRU 快取實現具有每個項目的生存時間 (TTL) 值。此類將生存時間值與每個項目相關聯。由於超過其生存時間而過期的項目將無法再訪問,並且最終將被刪除。

Time aware Least Recently Used (TLRU) cache

時間感知、最近最少使用 (TLRU) 是 LRU 的變體,專為快取內容具有有效生命週期而設計。此演算法適用於網路快取應用,例如資訊中心網路 (ICN)、內容傳遞網路 (CDN) 和一般分散式網路。

ref: https://ieeexplore.ieee.org/document/6779016