TinyLFU 緩存
TinyLFU 結合 LRU 和 LFU 的高性能緩存,提供最佳的命中率。
概述
TinyLFU 是一種混合緩存策略,結合了 LRU(最近使用)和 LFU(最少使用)的優點。它使用兩個小緩存:一個跟蹤最近訪問的項目(LFU),另一個跟蹤訪問頻率(LFU),在淘汰時綜合考慮兩者。
特性
- 命中率: 92% (最高)
- 內存佔用: 中等
- 並發性能: 高
- 實現複雜度: 複雜
使用場景
- 高性能要求
- 混合訪問模式
- 大數據集
- 需要最佳命中率的場景
快速開始
安裝
基本使用
高級使用
工作原理
TinyLFU 使用兩個小緩存:
- Window Cache (LRU): 跟蹤最近訪問的項目
- Main Cache (LFU): 跟蹤訪問頻率
當需要淘汰時:
- 優先淘汰 Window Cache 中的項目
- 如果 Window Cache 為空,淘汰 Main Cache 中頻率最低的項目
API 參考
構造函數
主要方法
性能特點
- 時間複雜度:
- Set: O(1) 平均
- Get: O(1) 平均
- Delete: O(1)
- 空間複雜度: O(n),其中 n 是緩存容量
最佳實踐
- 高性能場景首選: TinyLFU 提供最高的命中率
- 內存充足: 需要額外的內存來維護兩個小緩存
- 混合訪問模式: 既有時間局部性又有頻率局部性的場景最佳