Việc lấy thứ hạng cho một phần tử và sau đó làm việc theo các chỉ mục là một điều tầm thường. Giả sử rằng đầu vào duy nhất có sẵn cho ứng dụng của bạn là giới hạn điểm số ban đầu là 72 và 46, bạn có thể thực hiện điều này:
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>
Lệnh gọi bổ sung duy nhất là O (log (N)) ZREVRANK
gọi điện. Từ đó, cần một chút phép toán phía máy khách để có được các chỉ mục mới cho phạm vi mà bạn quan tâm và ZREVRANGE
để có được những giá trị bạn muốn.
Tôi đã thử nghiệm điều này trên Redis 2.6rc5, nhưng nó sẽ hoạt động trên bất kỳ phiên bản nào trên 2.0.