Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Paginação reversa por meio de um conjunto classificado Redis


É trivial obter a classificação de um elemento e, em seguida, trabalhar por índices. Presumindo que as únicas entradas disponíveis para seu aplicativo sejam os limites de pontuação inicial de 72 e 46, você pode fazer isso:
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> 

A única chamada adicional é O(log(N)) ZREVRANK ligar. A partir daí, é um pouco de matemática do lado do cliente para obter os novos índices para o intervalo em que você está interessado e ZREVRANGE para obter os valores desejados.

Eu testei isso no Redis 2.6rc5, mas deve funcionar em qualquer versão acima de 2.0.