BLPOP
Removes and returns the first element of the list, or blocks until one is available.
Syntax
BLPOP key [key ...] timeout
Parameters
- key: One or more keys representing the lists from which elements will be removed. The command examines the lists in the order they are specified.
 - timeout: The maximum time in seconds to block waiting for an element to be available. If set to 
0, the command will block indefinitely until an element is available. If set to a positive number, the command will block for that number of seconds before returningnilif no element is available. 
Details
- Available since: 1.0.0
 - Time complexity: O(1) for each pop operation. The blocking time complexity depends on the 
timeoutvalue. - ACL categories: 
@read,@write,@list,@slow 
The BLPOP command removes and returns the first element from the first non-empty list among the specified keys. If none of the specified lists contain elements, the command blocks until an element becomes available or until the timeout expires. If the timeout is set to 0, the command will block indefinitely.
The command returns a list with two elements:
- The key of the list from which the element was removed.
 - The element itself.
 
Examples
Basic Usage
Assume we have the following lists:
RPUSH mylist1 "a" "b" "c"
RPUSH mylist2 "x" "y"
To remove and return the first element from the beginning of mylist1:
BLPOP mylist1
After running this command:
mylist1will contain:bc- The returned value will be:
 
1) "mylist1"
2) "a"
Blocking Behavior
To block until an element becomes available in mylist1 or mylist2, with a timeout of 5 seconds:
BLPOP mylist1 mylist2 5
If an element becomes available within 5 seconds, it will be removed from one of the lists and returned. If no element becomes available within the timeout period, the command will return nil.
Immediate Return
To return immediately if no element is available, use a 0 timeout:
BLPOP mylist1 mylist2 0
If both mylist1 and mylist2 are empty, the command will return nil.
Multiple Keys
To remove and return the first element from the beginning of multiple lists:
BLPOP mylist1 mylist2 mylist3 10
The command will examine all specified lists in the order they are listed and return the first element from the first non-empty list within 10 seconds.
Edge Cases
- If 
timeoutis set to a negative value, the command will return an error. - If all specified lists are empty and the 
timeoutexpires, the command will returnnil. 
RESP2/RESP3 Reply
- Array reply: A list containing two elements:
- The key of the list from which the element was removed.
 - The removed element.
 
 - If no element is available within the 
timeoutperiod, the reply isnil.