Redis
 sql >> Database >  >> NoSQL >> Redis

Redis zrevrangebyscore, ordinamento diverso dall'ordine lessicografico

Il punteggio in un set ordinato supporta numeri in virgola mobile a doppia precisione, quindi forse una soluzione migliore sarebbe quella di memorizzare il punteggio redis come highscore.timestamp

per esempio. (pseudocodice)

highscore = 100
timestamp = now()
redis.zadd('myleaderboard', highscore + '.' + timestamp, playerId)

Ciò significherebbe che anche più giocatori che hanno ottenuto lo stesso punteggio elevato verranno ordinati in base al tempo in cui hanno raggiunto quel punteggio elevato come indicato di seguito

Per il giocatore 1...

redis.zadd('myleaderboard', '100.1362345366', "Charles")

Per il giocatore 2...

redis.zadd('myleaderboard', '100.1362345399', "Babbage")

Vedi questa domanda per maggiori dettagli:Punteggio unico per la classifica redis