لا تنفّذ أبداً UPDATE posts SET views = views + 1 لكل حدث على منشور ساخن — فذلك الصفّ الواحد يصبح عنق زجاجة للأقفال. زِد العدّ في Redis، واصرِفه على دفعات (batch-flush) إلى قاعدة البيانات كل بضع ثوانٍ، واقرأ العدّ من Redis. تخزّن قاعدة البيانات الإجماليات المعمّرة لا حركة المرور الحيّة.
البنية المعمارية
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)
