Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách xóa và trả về phần tử có điểm số thấp nhất của giá trị sorted set được lưu trữ tại một khóa trong kho dữ liệu redis, bằng cách sử dụng lệnh redis ZPOPMIN và BZPOPMIN.
Lệnh ZPOPMIN
Lệnh này xóa và trả về một hoặc nhiều phần tử có điểm số thấp nhất từ giá trị sorted set được lưu trữ tại một khóa được chỉ định. Lệnh nhận đối số count, đại diện cho tổng số phần tử sẽ bị xóa từ giá trị sorted set. Nếu không được chỉ định, giá trị mặc định của count là 1. Khi các phần tử được trả về, phần tử có điểm số thấp nhất sẽ là phần tử đầu tiên, tiếp theo là các phần tử có điểm số cao hơn.
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 và Nil được trả về, nếu khóa không tồn tại.
Cú pháp của lệnh Redis ZPOPMIN như sau :-
Cú pháp :-
redis host:port> ZPOPMIN <keyname> <count>
Đầu ra :-
- (array) reply, đại diện cho các phần tử và điểm số của sorted set. - (nil), nếu khóa không tồn tại. - Error, 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ụ :-

Lệnh BZPOPMIN
Lệnh này là phiên bản chặn (blocking version) của lệnh ZPOPMIN vì nó chặn thao tác khi không có phần tử nào để pop từ bất kỳ sorted set được chỉ định nào. Nói cách khác, nó chặn thao tác khi tất cả các sorted set được chỉ định đều rỗng hoặc tất cả các khóa được chỉ định không tồn tại.
Nó xóa và trả về phần tử có điểm số thấp nhất từ sorted set đầu tiên không rỗng, với các khóa được chỉ định được kiểm tra từ trái sang phải. Ví dụ, nếu lệnh BZPOPMIN set1 set2 set3 0 được thực thi, nơi khóa set1 không tồn tại ( coi như tập hợp rỗng ), set2 là tập hợp rỗng và set3 chứa ba phần tử, thì nó xóa và trả về phần tử có điểm số thấp nhất của giá trị sorted set được lưu trữ tại set3 vì đó là tập hợp không rỗng đầu tiên, khi kiểm tra từ set1 đến set3.
Lệnh này nhận đối số timeout (số nguyên), đại diện cho số giây tối đa để chặn. Timeout bằng 0 có thể dùng để chặn vô thời hạn.
Cú pháp của lệnh redis BZPOPMIN như sau :-
Cú pháp :-
redis host:port> BZPOPMIN <keyname> [ <keyname> ] <timeout>
Đầu ra :-
- (array) reply, ba phần tử được trả về: phần tử đầu tiên là tên khóa sorted set, phần tử thứ hai là điểm số của phần tử bị pop và phần tử thứ ba là phần tử bị pop chính nó. - (nil), khi không thể pop phần tử nào và timeout đã hết hạn.
Ví dụ :-

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