Bạn có biết?
Một API đọc dữ liệu từ database mất 50ms. Cùng API đó đọc từ cache mất 1ms — nhanh gấp 50 lần. Và nếu dữ liệu tĩnh (ảnh, CSS, video) đi qua CDN, người dùng ở Hà Nội tải từ server đặt tại Singapore thay vì chạy nửa vòng trái đất. Caching là kỹ thuật mang lại ROI lớn nhất trong toàn bộ system design — chi phí gần như bằng 0, lợi ích gấp nhiều lần.
Các tầng cache: càng gần user càng nhanh
- Browser cache — ảnh/CSS/JS lưu trên máy user (HTTP cache headers), không cần mạng
- CDN — nội dung tĩnh đặt rải rác gần user trên toàn cầu
- Application cache — Redis/Memcached trước database (xem Redis vs Memcached)
- Database cache — buffer pool, query cache của chính database
Nguyên tắc: cache ở tầng càng thấp, càng rẻ và càng nhanh — nhưng chỉ áp dụng được cho dữ liệu ít thay đổi. Dữ liệu động (giỏ hàng, số dư) phải ở tầng gần nguồn hơn.
Cache-aside: pattern phổ biến nhất
Ứng dụng tự quản lý cache: đọc cache trước, miss thì đọc database rồi ghi vào cache (chi tiết code: Cache Strategies với Redis):
async function getUser(id) {
// 1. Đọc cache
const cached = await redis.get(`user:${id}`);
if (cached) return JSON.parse(cached);
// 2. Miss → đọc database
const user = await db.getUser(id);
// 3. Ghi cache kèm TTL (vd 5 phút)
await redis.set(`user:${id}`, JSON.stringify(user), , );
user;
}
() {
db.(id, data);
redis.();
}
0 bình luận
Đang tải bình luận...
Để lại bình luận