Nigdy nie wykonuj UPDATE posts SET views = views + 1 na zdarzenie dla gorącego postu — ten jeden wiersz staje się wąskim gardłem blokad. Inkrementuj w Redis, wsadowo zrzucaj (batch-flush) do DB co kilka sekund i odczytuj licznik z Redis. DB przechowuje trwałe sumy, a nie ruch na żywo.
Architektura
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)
