Skip to content

Eviction Strategies ​

Khi cache đầy (đạt maxSize), entry nào nên được xóa?

LRU (Least Recently Used) ​

Xóa entry được truy cập lâu nhất.

Thứ tự truy cập: A → B → C → A → D
Kích thước cache: 3

Sau D:
  A: lastAccess=4 (gần đây)
  C: lastAccess=3 (gần đây)
  D: lastAccess=5 (gần đây)
  B: lastAccess=2 (cũ nhất) ← EVICT

Phù hợp cho: Mục đích chung, hầu hết web applications.

typescript
const node = new CacheNode("node-1", {
  maxSize: 1000,
  evictionPolicy: "lru", // mặc định
});

LFU (Least Frequently Used) ​

Xóa entry có ít lần truy cập nhất.

Số lần truy cập:
  A: 10 lần
  B: 2 lần  ← EVICT
  C: 8 lần

Phù hợp cho: Workload có rõ "hot" và "cold" keys.

typescript
const node = new CacheNode("node-1", {
  maxSize: 1000,
  evictionPolicy: "lfu",
});

FIFO (First In, First Out) ​

Xóa entry cũ nhất bất kể truy cập.

Thứ tự chèn: A → B → C → D
Kích thước cache: 3

Sau D:
  A: chèn thứ 1 ← EVICT
  B: chèn thứ 2
  C: chèn thứ 3
  D: chèn thứ 4

Phù hợp cho: Workload đơn giản, streaming data.

typescript
const node = new CacheNode("node-1", {
  maxSize: 1000,
  evictionPolicy: "fifo",
});

So sánh ​

Chiến lượcTốc độBộ nhớUse Case
LRUNhanhTốtMục đích chung
LFUTrung bìnhTốt nhấtHot key patterns
FIFONhanh nhấtTrung bìnhWorkload đơn giản

TTL (Time To Live) ​

Ngoài eviction, entries có thể tự hết hạn:

typescript
// Tự hết hạn sau 60 giây
node.set("session:abc", data, 60000);

// Background sweep mỗi 30 giây xóa entries hết hạn

Released under the MIT License.