sql >> Database >  >> NoSQL >> Redis

Omgekeerde paginering via een opnieuw gesorteerde set

Het is triviaal om de rang voor een element te krijgen en vervolgens met indexen te werken. Ervan uitgaande dat de enige beschikbare invoer voor uw toepassing de initiële scoregrenzen van 72 en 46 zijn, kunt u dit doen:

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> 

De enige extra aanroep is de O(log(N)) ZREVRANK telefoongesprek. Van daaruit is het een beetje rekenwerk aan de clientzijde om de nieuwe indexen te krijgen voor het bereik waarin u geïnteresseerd bent, en ZREVRANGE om de gewenste waarden te krijgen.

Ik heb dit getest op Redis 2.6rc5, maar het zou moeten werken op elke versie boven 2.0.




  1. Waarom kost een 500 MB Redis dump.rdb-bestand ongeveer 5,0 GB geheugen?

  2. MongoDB logt alle vragen

  3. Hoe kan ik verwijderde ruimte terugwinnen zonder `db.repairDatabase()`?

  4. Mongoose kan geen verbinding maken zonder internet