スコアをキーとするRedisのsorted set(ZSET)を使います:ランクとtop-NがビルトインのO(log N)操作になるので、リクエストごとに数百万行をソートすることは決してありません。 ZSETはメンバーをスコア順に自動的に保ちます。それがまさにリーダーボードです。
アーキテクチャ
text
Game svc ──ZADD score──▶ Redis ZSET (sorted by score) ──ZREVRANGE 0 99──▶ Top-100 API
│
├─ ZREVRANK user ─▶ "your rank" (around-me: rank±5)
└─ AOF/RDB + async ─▶ Postgres (durable source of truth)
