sql >> Base de Datos >  >> NoSQL >> Redis

Paginación inversa a través de un conjunto ordenado Redis

Es trivial obtener el rango de un elemento y luego trabajar por índices. Suponiendo que las únicas entradas disponibles para su aplicación son los límites de puntuación inicial de 72 y 46, puede hacer esto:

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> 

La única llamada adicional es O(log(N)) ZREVRANK llamar. A partir de ahí, es un poco de matemática del lado del cliente para obtener los nuevos índices para el rango que le interesa, y ZREVRANGE para obtener los valores que desea.

Probé esto en Redis 2.6rc5, pero debería funcionar en cualquier versión superior a la 2.0.