Computer >> Máy Tính >  >> Lập trình >> Redis

Cách lấy phần tử có điểm cao nhất của một tập hợp đã sắp xếp - Redis ZPOPMAX | BZPOPMAX

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về cách xóa và trả về phần tử điểm cao nhất của giá trị tập hợp đã sắp xếp được lưu trữ tại một khóa trong kho dữ liệu redis, bằng cách sử dụng các lệnh redis ZPOPMAX và BZPOPMAX.

Lệnh ZPOPMAX

Lệnh này loại bỏ và trả về một hoặc nhiều phần tử điểm cao nhất từ ​​giá trị tập hợp đã sắp xếp được lưu trữ tại một khóa được chỉ định. Lệnh nhận count dưới dạng một đối số, đại diện cho tổng số phần tử được xóa khỏi giá trị tập hợp đã sắp xếp. Trong trường hợp, nếu nó không được chỉ định, giá trị mặc định của số đếm là 1. Khi các phần tử được trả về, phần tử có điểm cao nhất sẽ là phần tử đầu tiên, tiếp theo là các phần tử có điểm thấp hơn.

Lỗi được trả về, nếu khóa tồn tại nhưng giá trị được lưu trữ tại khóa không thuộc kiểu dữ liệu đã được sắp xếp và Nil được trả về, nếu khóa không tồn tại.

Cú pháp của lệnh Redis ZPOPMAX như sau:-

Cú pháp:-

redis host:post> ZPOPMAX <keyname> <count>

Đầu ra:-

Trả lời
- (array) reply, representing elements and scores of the sorted set.
- (nil), if key does not exists.
- Error, if key exist and value stored at the key is not a sorted set.

Ví dụ:-

Cách lấy phần tử có điểm cao nhất của một tập hợp đã sắp xếp - Redis ZPOPMAX | BZPOPMAX

Lệnh BZPOPMAX

Lệnh này là một phiên bản chặn của lệnh ZPOPMAX vì nó chặn hoạt động khi không có phần tử nào xuất hiện từ bất kỳ tập hợp được sắp xếp đã chỉ định nào. Nói cách khác, nó chặn hoạt động khi tất cả các nhóm được sắp xếp cụ thể trống hoặc tất cả các khóa được chỉ định không tồn tại.

Nó loại bỏ và trả về phần tử điểm cao nhất từ ​​một giá trị đặt được sắp xếp không trống đầu tiên, với các khóa được chỉ định được kiểm tra từ trái sang phải. Vì vậy, ví dụ:lệnh if BZPOPMAX set1 set2 set3 0 được thực thi, trong đó phím set1 không tồn tại (coi như một tập hợp trống), set2 là một tập hợp trống và set3 chứa ba phần tử, sau đó nó sẽ xóa và trả về phần tử điểm cao nhất của giá trị tập hợp đã sắp xếp được lưu trữ tại set3 vì nó là tập hợp không trống đầu tiên, khi kiểm tra từ set1 đến set3.

Lệnh này cần thời gian chờ (số nguyên) làm đối số, đại diện cho số giây tối đa để chặn. Thời gian chờ bằng 0 có thể được sử dụng để chặn vô thời hạn.

Cú pháp của lệnh redis BZPOPMAX như sau:-

Cú pháp:-

redis host:post> BZPOPMAX <keyname> [ <keyname> ] <timeout>

Đầu ra:-

Trả lời
- (array) reply, three elements are returned where first element is name of the sorted set key, the 
  second element is the score of the popped element and third element is the popped element itself.
- (nil), when no element could be popped and timeout is expired.

Ví dụ:-

Cách lấy phần tử có điểm cao nhất của một tập hợp đã sắp xếp - Redis ZPOPMAX | BZPOPMAX

Tài liệu tham khảo:-

  1. Tài liệu lệnh ZPOPMAX
  2. Tài liệu lệnh BZPOPMAX

Đó là tất cả về cách xóa và trả về phần tử điểm cao nhất của giá trị tập hợp đã sắp xếp được lưu trữ trong kho dữ liệu redis. Nếu bạn thích nó, hãy chia sẻ suy nghĩ của bạn trong phần bình luận và chia sẻ nó với những người khác.