sql >> Databasteknik >  >> NoSQL >> Redis

Omvänd paginering genom en Redis sorterad uppsättning

Det är trivialt att få rankningen för ett element och sedan arbeta efter index. Förutsatt att de enda indata som är tillgängliga för din ansökan är de initiala poänggränserna för 72 och 46, kan du göra detta:

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 enda extra anropet är O(log(N)) ZREVRANK ringa upp. Därifrån är det lite matematik på klientsidan för att få de nya indexen för intervallet du är intresserad av, och ZREVRANGE för att få de värden du vill ha.

Jag testade detta på Redis 2.6rc5, men det borde fungera på alla versioner över 2.0.




  1. Spring data mongo använder OR i Query

  2. Hur man tappar index med Mongoose

  3. Hur man använder ny URL från mongodb 3.6 för att ansluta från golang

  4. MongoDB - Filtrera innehållet i en intern Array i en resultatuppsättning