fix caching

This commit is contained in:
2025-04-04 02:12:45 +02:00
parent 21b04afd10
commit 1e16b4c01d
7 changed files with 166 additions and 144 deletions

View File

@@ -21,18 +21,12 @@ export class LeaderboardService {
const pipeline = redis.pipeline()
pipeline.del(zsetKey) // clear existing
for (const entry of fresh.alltime) {
for (const entry of fresh) {
// store by mmr for ranking
pipeline.zadd(zsetKey, entry.data.mmr, entry.id)
pipeline.zadd(zsetKey, entry.rank, entry.id)
// store user data separately for quick lookups
pipeline.hset(`user:${entry.id}`, {
name: entry.name,
mmr: entry.data.mmr,
wins: entry.data.wins,
losses: entry.data.losses,
// add other fields you need for quick lookup
})
pipeline.hset(`user:${entry.id}`, entry)
}
pipeline.expire(zsetKey, 180)

View File

@@ -11,11 +11,23 @@ const BMM_SERVER_ID = '1226193436521267223'
export const neatqueue_service = {
get_leaderboard: async (channel_id: string) => {
const response = await instance.get(
`leaderboard/${BMM_SERVER_ID}/${channel_id}`
)
const res = await instance
.get(`leaderboard/${BMM_SERVER_ID}/${channel_id}`)
.json<LeaderboardResponse>()
return response.json<LeaderboardResponse>()
//desc
res.alltime.sort((a, b) => b.data.mmr - a.data.mmr)
const fixed: Array<Data & { id: string; name: string }> = res.alltime.map(
(entry, idx) => {
return {
...entry.data,
rank: idx + 1,
id: entry.id,
name: entry.name,
}
}
)
return fixed
},
get_history: async (
player_ids: string[],