Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Redis

Xóa và trả về phần tử đầu tiên của Redis List bằng LPOP và BLPOP

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ử đầu tiên của giá trị list được lưu trữ tại một khóa trong kho dữ liệu redis. Để làm điều này, chúng ta sẽ sử dụng lệnh redis LPOP và BLPOP.

Lệnh LPOP

Lệnh này được dùng để xóa và trả về phần tử đầu tiên của giá trị list được lưu trữ tại khóa được chỉ định. Nil đượ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 list. Cú pháp của lệnh Redis LPOP như sau :-

Cú pháp :-

redis host:port> LPOP <keyname>

Đầu ra :-

- (string) reply, đại diện cho phần tử đầu tiên của danh sách.
- (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à list.

Ví dụ :-

Xóa và trả về phần tử đầu tiên của Redis List bằng LPOP và BLPOP

Lệnh BLPOP

Lệnh này là phiên bản chặn (blocking version) của lệnh LPOP vì nó chặn thao tác khi không có phần tử nào để pop từ bất kỳ danh sách được chỉ định nào. Nói cách khác, nó chặn thao tác khi tất cả các danh sách đượ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ử đầu tiên của giá trị list 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 BLPOP list1 list2 list3 0 được thực thi, nơi khóa list1 không tồn tại ( coi như danh sách rỗng ), list2 là danh sách rỗng và list3 chứa ba phần tử, thì nó xóa và trả về phần tử đầu tiên của giá trị list được lưu trữ tại list3 vì đó là danh sách không rỗng đầu tiên, khi kiểm tra từ list1 đến list3.

Nếu khóa được chỉ định không tồn tại hoặc giá trị list của khóa được chỉ định rỗng, BLPOP chặn thao tác cho đến khi client khác thực thi lệnh như LPUSH, RPUSH, và LINSERT để chèn một phần tử vào một trong các khóa được chỉ định. Khi phần tử mới xuất hiện trên một trong các giá trị list, client trả về với tên khóa bỏ chặn nó và giá trị bị pop.

Khi BLPOP khiến client bị chặn và một timeout khác 0 được chỉ định, client sẽ bỏ chặn trả về giá trị nil khi timeout đã chỉ định hết hạn mà không có thao tác chèn nào đối với ít nhất một trong các khóa được chỉ định.

Đối số timeout là một giá trị số nguyên đại diện cho số giây tối đa để chặn. Timeout 0 giây có thể dùng để chặn vô thời hạn.

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

Cú pháp :-

redis host:port> BLPOP <keyname-1> [ <keyname> ] <timeout>

Đầu ra :-

- (array) reply, hai phần tử được trả về: phần tử đầu tiên là tên khóa của phần tử bị pop và phần tử thứ hai 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ụ :-

Xóa và trả về phần tử đầu tiên của Redis List bằng LPOP và BLPOP

Tham khảo :-

  1. LPOP Command Docs
  2. BLPOP Command Docs

Đó là tất cả về cách xóa và trả về phần tử đầu tiên của giá trị list đượ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.

<- List Commands