Use um sorted set (ZSET) do Redis indexado pelo score: rank e top-N se tornam operações O(log N) embutidas, então você nunca ordena milhões de linhas por requisição. Um ZSET mantém os membros ordenados por score automaticamente; é exatamente isso que um leaderboard é.
Arquitetura
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)
