Docs học tập
Backend nền tảng

C2 · Chiến lược Cache: Cache-Aside, Write-Through, Write-Behind

Cache-Aside: App đọc cache → miss thì đọc DB rồi ghi vào cache. Phổ biến nhất, đơn giản.

C2 · Junior · cốt lõi

Cache như tờ ghi chú trên bàn, chép lại những thông tin hay tra từ sổ gốc dưới kho (DB): xem ghi chú nhanh hơn xuống kho. Cái khó là giữ ghi chú khớp với sổ gốc. Cache-Aside: xem ghi chú trước, không có mới xuống kho tra rồi chép lên. Write-Through: mỗi lần sửa, sửa cả ghi chú lẫn sổ gốc ngay. Write-Behind: sửa ghi chú trước, cuối ngày mới cập nhật vào sổ – nhanh, nhưng mất ghi chú là mất luôn phần chưa cập nhật.

Cốt lõi

  • Cache-Aside: App đọc cache → miss thì đọc DB rồi ghi vào cache. Phổ biến nhất, đơn giản.
  • Write-Through: App ghi vào cache và DB cùng lúc → dữ liệu nhất quán, ghi chậm hơn.
  • Write-Behind: App ghi vào cache, cache ghi xuống DB bất đồng bộ sau → ghi rất nhanh, có rủi ro mất dữ liệu.
  • Công cụ: Redis, Memcached.

Đánh đổi

Đọc nhiều → Cache-Aside. Cần nhất quán → Write-Through. Ghi cực nhiều, chấp nhận rủi ro → Write-Behind.

Trong thực tế

Instagram cache newsfeed theo kiểu Cache-Aside.

Bug thường gặp

Cập nhật DB nhưng quên xóa hoặc cập nhật cache → người dùng thấy dữ liệu cũ; hoặc cache không đặt TTL khiến Redis đầy bộ nhớ.

Tự hỏi lại

Invalidate cache thế nào? TTL? Cache stampede (nhiều request cùng miss) xử lý ra sao?

On this page