Cache (Bộ nhớ đệm)

Lưu trữ tạm thời dữ liệu thường xuyên được truy cập ở nơi truy xuất nhanh (RAM, gần người dùng) để không phải mỗi lần đều lấy từ nguồn gốc chậm hơn (database, dịch vụ ngoài).

Ví dụ: photo vài tài liệu hay dùng để trên bàn thay vì mỗi lần đi tới tủ hồ sơ. Thách thức: khi tài liệu gốc đổi, bản photo cũng phải cập nhật → cache invalidation (“một trong những việc khó nhất trong lập trình”).

Các vị trí đặt cache

  • Client (trình duyệt, app mobile): cache ảnh/CSS/JS.
  • CDN (edge server): nội dung tĩnh gần người dùng.
  • Reverse proxy (Nginx, Varnish): cache kết quả request phổ biến (trang chủ trong 60s).
  • Application cache (in-memory, Redis, Memcached): cache truy vấn tốn kém.
  • Database cache: query cache, buffer pool.

Bốn chiến lược cập nhật cache

Chiến lượcCách hoạt độngĐặc điểm
Cache-Aside (Lazy Loading)App đọc cache trước; miss thì query DB rồi nạp vào cache. Ghi thì ghi DB + xóa cachePhổ biến nhất, đơn giản; lần đầu miss vẫn chậm
Write-ThroughGhi đồng thời vào DB cacheNhất quán cao, đọc luôn mới; ghi chậm hơn
Write-Back (Write-Behind)Ghi vào cache trước (đánh dấu dirty), ghi xuống DB sau theo lịchGhi rất nhanh; rủi ro mất dữ liệu nếu cache chết
Refresh-AheadChủ động làm mới cache trước khi TTL hết hạnNgười dùng luôn gặp cache “nóng”; lãng phí nếu dự đoán sai

Khi nào nên cache

Dữ liệu đọc nhiều hơn ghi và không yêu cầu mới nhất tuyệt đối. Cache liên quan chặt tới cuối cùng (dữ liệu có thể cũ trong TTL).

Liên quan