Тривиално е да получите ранга за елемент и след това да работите по индекси. Предполагайки, че единствените налични данни за вашето приложение са първоначалните граници на резултата от 72 и 46, можете да направите това:
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>
Единственото допълнително извикване е O(log(N)) ZREVRANK
обадете се. Оттам нататък е малко математика от страна на клиента, за да получите новите индекси за диапазона, който ви интересува, и ZREVRANGE
за да получите желаните от вас стойности.
Тествах това на Redis 2.6rc5, но трябва да работи на всяка версия над 2.0.