Redis
 sql >> Base de données >  >> NoSQL >> Redis

Redis SortedSet :Comment obtenir des valeurs dans l'ordre numérique plutôt que dans l'ordre alphabétique lorsque deux valeurs ont le même score ?

Lorsque les membres d'un ensemble trié ont le même score, ils sont triés lexicographiquement. Il n'y a pas de moyen simple de les commander différemment AFAIK, mais vous pouvez facilement faire le tri du côté du client. Alternativement, vous pouvez créer un court script Lua qui le fait pour vous sur le serveur.

Il existe une manière légèrement hackeuse de vous en sortir avec ce que vous voulez sans recourir aux approches ci-dessus. Sur la base de l'exemple que vous avez fourni et en supposant que le rang et l'identifiant de l'utilisateur sont des entiers, vous pouvez utiliser des scores qui sont une combinaison des deux, comme ceci :

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

Cela vous permettra de faire des gammes et vous obtiendrez un tri "numérique" pour chaque rang (c'est-à-dire avec zrangebyscore game_rank 550000000 559999999 ).