Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Redis SortedSet:Wie erhält man Werte in numerischer Reihenfolge statt in alphabetischer Reihenfolge, wenn zwei Werte die gleiche Punktzahl haben?

Wenn die Mitglieder einer sortierten Menge denselben Wert haben, werden sie lexikografisch sortiert. Es gibt keine einfache Möglichkeit, sie anders zu bestellen AFAIK, aber Sie können die Sortierung auf Kundenseite problemlos vornehmen. Alternativ könnten Sie sich ein kurzes Lua-Skript ausdenken, das das für Sie auf dem Server erledigt.

Es gibt einen leicht hackigen Weg, wie Sie mit dem durchkommen können, was Sie wollen, ohne auf die oben genannten Ansätze zurückzugreifen. Basierend auf dem von Ihnen bereitgestellten Beispiel und unter der Annahme, dass sowohl Rang als auch Benutzer-ID ganze Zahlen sind, könnten Sie Punktzahlen verwenden, die eine Kombination aus beiden sind, wie folgt:

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

Dadurch können Sie die Bereiche und ausführen Sie erhalten eine "numerische" Sortierung für jeden Rang (z. B. mit zrangebyscore game_rank 550000000 559999999 ).