Nunca hagas UPDATE posts SET views = views + 1 por evento en un post caliente — esa única fila se convierte en un cuello de botella de locks. Incrementa en Redis, haz flush por lotes a la DB cada pocos segundos, y lee el conteo desde Redis. La DB almacena los totales duraderos, no el tráfico en vivo.
Arquitectura
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)
