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

Omvendt sideinddeling gennem et Redis-sorteret sæt

Det er trivielt at få rangeringen for et element og derefter arbejde efter indekser. Hvis du antager, at de eneste input, der er tilgængelige for din ansøgning, er de indledende scoregrænser på 72 og 46, kan du gøre dette:

redis 127.0.0.1:6379> ZREVRANGEBYSCORE mySortedSet 72 (46
1) "G"
2) "F"
3) "E"
redis 127.0.0.1:6379> ZREVRANK mySortedSet G
(integer) 4
redis 127.0.0.1:6379> ZREVRANGE mySortedSet 1 3
1) "J"
2) "I"
3) "H"
redis 127.0.0.1:6379> 

Det eneste ekstra kald er O(log(N)) ZREVRANK opkald. Derfra er det lidt klientside matematik at få de nye indekser for det område, du er interesseret i, og ZREVRANGE for at få de værdier, du ønsker.

Jeg testede dette på Redis 2.6rc5, men det burde virke på enhver version over 2.0.




  1. fagforening på samme samling i mongodb

  2. Opret forbindelse til en specifik database som standard i mongodb

  3. MongoDB - filstørrelsen er enorm og voksende

  4. Annuller job i Laravel