Sangat sepele untuk mendapatkan peringkat untuk suatu elemen, dan kemudian bekerja berdasarkan indeks. Dengan asumsi bahwa satu-satunya input yang tersedia untuk aplikasi Anda adalah batas skor awal 72 dan 46, Anda dapat melakukan ini:
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>
Satu-satunya panggilan tambahan adalah O(log(N)) ZREVRANK
panggilan. Dari sana, sedikit matematika sisi klien untuk mendapatkan indeks baru untuk rentang yang Anda minati, dan ZREVRANGE
untuk mendapatkan nilai yang Anda inginkan.
Saya menguji ini di Redis 2.6rc5, tetapi seharusnya berfungsi pada versi apa pun di atas 2.0.