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

Umgekehrte Paginierung durch einen Redis-sortierten Satz

Es ist trivial, den Rang für ein Element zu erhalten und dann nach Indizes zu arbeiten. Unter der Annahme, dass die einzigen Eingaben, die Ihrer Anwendung zur Verfügung stehen, die anfänglichen Punktzahlgrenzen von 72 und 46 sind, können Sie Folgendes tun:

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> 

Der einzige zusätzliche Aufruf ist der O(log(N)) ZREVRANK Forderung. Von dort aus ist es ein bisschen Client-seitige Mathematik, um die neuen Indizes für den Bereich zu erhalten, an dem Sie interessiert sind, und ZREVRANGE um die gewünschten Werte zu erhalten.

Ich habe dies auf Redis 2.6rc5 getestet, aber es sollte auf jeder Version über 2.0 funktionieren.