Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách lấy một hoặc nhiều phần tử của giá trị tập hợp đã sắp xếp (sorted set) có hạng nằm trong một phạm vi cụ thể và theo thứ tự giảm dần theo điểm số (score). Để thực hiện điều này, chúng ta sẽ sử dụng lệnh ZREVRANGE của Redis.
Lệnh ZREVRANGE
Lệnh ZREVRANGE trả về một hoặc nhiều phần tử của giá trị sorted set được lưu trữ tại khóa (key) được chỉ định, được xác định bởi phạm vi đã cho. Các phần tử trong sorted set được sắp xếp theo thứ tự giảm dần theo score. Thứ tự từ điển giảm dần được sử dụng cho các phần tử có score bằng nhau.
Phạm vi được xác định bởi vị trí bắt đầu (start, bao gồm) và vị trí kết thúc (stop, bao gồm), đây là các chỉ số dựa trên 0 (zero-based indexes), trong đó 0 là phần tử đầu tiên, 1 là phần tử thứ hai, và cứ thế. Các số âm cũng có thể được dùng để cung cấp offset tính từ cuối danh sách, ở đây -1 là phần tử cuối cùng, -2 là phần tử倒数第二, và cứ thế.
Các offset ngoài phạm vi được xử lý như sau:
- (start > end) hoặc (start > kích thước sorted set): Kết quả là một danh sách rỗng.
- (end > kích thước sorted set): Chỉ số của phần tử cuối cùng của giá trị sorted set được đặt làm offset kết thúc.
Một tập hợp rỗng được trả về nếu khóa không tồn tại và lỗi được trả về nếu khóa tồn tại nhưng giá trị lưu trữ tại khóa không phải là kiểu dữ liệu sorted set.
Đối số WITHSCORES (tùy chọn) có thể được truyền vào lệnh để lấy điểm số của các phần tử cùng với các phần tử. Trong trường hợp này, mảng trả về sẽ chứa giá trị1, điểm1, …, giá trịN, điểmN thay vì giá trị1, …, giá trịN.
Cú pháp:
redis host:port> ZREVRANGE <tên_khóa> <start> <stop> [WITHSCORES]
Đầu ra:
- (mảng) phản hồi, đại diện cho các phần tử của sorted set trong phạm vi chỉ định. - Tập hợp rỗng, nếu khóa không tồn tại. - Lỗi, nếu khóa tồn tại và giá trị lưu trữ tại khóa không phải là sorted set.
Ví dụ:

Tài liệu tham khảo:
- Tài liệu lệnh ZREVRANGE
Trên đây là tất cả về cách lấy một hoặc nhiều phần tử của giá trị sorted set có hạng trong phạm vi cụ thể và theo thứ tự giảm dần theo score. Nếu bạn thấy hữu ích, hãy chia sẻ suy nghĩ của bạn trong phần bình luận và lan tỏa cho người khác nhé.