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

Redis SortedSet:come ottenere valori in ordine numerico anziché in ordine alfabetico quando due valori hanno lo stesso punteggio?

Quando i membri di un insieme ordinato hanno lo stesso punteggio, vengono ordinati lessicograficamente. Non esiste un modo semplice per ordinarli in modo diverso AFAIK, ma puoi facilmente eseguire lo smistamento dal lato del cliente. In alternativa, puoi creare un breve script Lua che lo faccia per te sul server.

C'è un modo leggermente hackish per farla franca con quello che vuoi senza ricorrere agli approcci sopra. Sulla base dell'esempio che hai fornito e supponendo che sia il rango che l'ID utente siano interi, puoi utilizzare punteggi che sono una combinazione di entrambi, in questo modo:

zadd game_rank 550006435 6435
zadd game_rank 556088561 6088561
zadd game_rank 550608825 608825

Questo ti permetterà di fare intervalli e otterrai un ordinamento "numerico" per ogni grado (cioè con zrangebyscore game_rank 550000000 559999999 ).