Non fare mai UPDATE posts SET views = views + 1 per ogni evento su un post caldo: quella singola riga diventa un collo di bottiglia da lock. Incrementa in Redis, fai flush a batch verso il DB ogni pochi secondi e leggi il conteggio da Redis. Il DB conserva i totali durevoli, non il traffico live.
Architettura
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)
