Kamwe usifanye UPDATE posts SET views = views + 1 kwa kila tukio kwenye post moto — row hiyo moja huwa lock bottleneck. Ongeza katika Redis, na flush kwa batch kwenda DB kila sekunde chache, na soma idadi kutoka Redis. DB huhifadhi jumla za kudumu, si traffic ya moja kwa moja.
Usanifu
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)
