อย่าทำ UPDATE posts SET views = views + 1 ต่อ event บนโพสต์ที่ร้อน — row เดียวนั้นจะกลายเป็น lock bottleneck เพิ่มค่าใน Redis แล้ว batch-flush ลง DB ทุกไม่กี่วินาที และอ่านค่า count จาก Redis DB เก็บยอดรวมที่ durable ไม่ใช่ traffic สด
สถาปัตยกรรม
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)
