Đừng bao giờ UPDATE posts SET views = views + 1 cho mỗi event trên một bài nóng — hàng đó trở thành nút thắt khoá (lock). Tăng đếm trên Redis, flush theo lô xuống DB vài giây một lần, và đọc số đếm từ Redis. DB lưu tổng bền vững, không phải traffic trực tiếp.
Kiến trúc
Client tap ─▶ API ─▶ Redis INCR views:{post} (live, source of truth for reads)
│ └── dedup: SADD seen:{post} {user/ip}
▼
every ~5s / N ops
Flusher ─▶ UPDATE posts SET views = views + delta (durable)
▲
read path: GET Redis (fallback DB on miss)
