Chủ đề: Cache Aside, Read Through, Write Through, Write Back, Cache Invalidation, Distributed Cache.
Luận điểm trung tâm của phần này
Cache tồn tại vì hai sự thật: RAM nhanh hơn disk ~1000 lần (chương 00 §3), và truy cập dữ liệu có locality — một phần nhỏ dữ liệu nhận phần lớn truy cập (luật lũy thừa, 13.2 — hot partition là mặt tối của cùng quy luật). Không có locality, cache vô dụng; có locality, cache là đòn bẩy hiệu năng rẻ nhất trong toàn bộ hộp đồ nghề.
Nhưng cache là bản sao — và mọi bản sao đặt ra câu hỏi consistency (4.2). Toàn bộ nghệ thuật caching gói trong một câu: chịu stale bao lâu, và trả giá invalidation ở đâu. Ba chương của phần này là ba mặt của câu đó:
- 7.1. Bốn chiến lược cache — ai ghi, ai đọc, ai chịu trách nhiệm
- 7.2. Cache Invalidation — bài toán khó thứ nhất của khoa học máy tính
- 7.3. Distributed Cache — cache khi một node không đủ
Bản đồ kiến thức cache trong toàn tài liệu
Phần này là “lý thuyết trung tâm”; các mảnh thực chiến đã nằm ở chỗ của chúng:
| Mảnh | Ở đâu |
|---|---|
| Đưa cache vào hệ thống đúng lúc, đúng cách | 12.2 — Thêm Redis |
| Redis — công cụ cache chủ lực | 5.4 |
| Ba sự cố cache kinh điển: Stampede, Avalanche, Thundering Herd | 13.1 |
| Hot key | 13.2, 7.3 |
| Cache như projection của CQRS | 12.8 |
Nguyên tắc bất di bất dịch — nhắc lại một lần cho cả phần
Mọi quyết định ghi đọc từ nguồn sự thật, không đọc cache. Cache phục vụ hiển thị; transaction phục vụ sự thật. Vi phạm nguyên tắc này là nguồn của các bug tiền bạc khó tái hiện nhất (12.2 §3, 12.8 §7).