sql >> Database >  >> NoSQL >> Redis

Redis SortedSet:hoe krijg ik waarden in numerieke volgorde in plaats van alfabetische volgorde als twee waarden dezelfde score hebben?

Wanneer de leden van een gesorteerde set dezelfde score hebben, worden ze lexicografisch gesorteerd. Er is geen eenvoudige manier om ze AFAIK anders te laten bestellen, maar u kunt het sorteren eenvoudig aan de kant van de klant doen. Je kunt ook een kort Lua-script maken dat dat voor je doet op de server.

Er is een enigszins hackachtige manier om weg te komen met wat je wilt zonder toevlucht te nemen tot de bovenstaande benaderingen. Op basis van het voorbeeld dat je had gegeven en ervan uitgaande dat zowel rang als gebruikers-ID gehele getallen zijn, zou je scores kunnen gebruiken die een combinatie van beide zijn, zoals:

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

Hiermee kunt u bereiken en . doen je krijgt een "numerieke" sortering voor elke rang (d.w.z. met zrangebyscore game_rank 550000000 559999999 ).




  1. Direct verbinding maken met Redis met (client side) javascript?

  2. Mongodb-aggregatie $groep, beperk de lengte van de array

  3. Interne arraygrootte opvragen in MongoDB

  4. Filteraggregatie maken in het voorjaar