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?