BLPOP
BLPOP key [key ...] timeout
- Group
- List
- Complexity
- O(N) where N is the number of keys given
- Arity
- -3 (at least 3 words, counting the command name)
- Flags
- write, blocking
- Keys
- first 1, last -2, step 1
- HotKV Cloud
- All plans
- On-Premise
- no license needed
BLPOP is the blocking form of LPOP. It checks the keys in
the order given and pops the first element of the first one that holds a
non-empty list. If every list is empty or missing, the connection waits until
another client pushes to one of the keys, or until timeout passes.
While waiting, the client is served from whichever of its keys receives an element first. A key that changes to a different type while you wait is skipped, and the client keeps waiting.
timeout is in seconds and can have a fractional part (for example 0.5).
0 waits forever.
Inside MULTI / EXEC and inside scripts,
BLPOP never waits: if no element is available it replies right away as if
the timeout had expired.
Return value
Section titled “Return value”| Case | RESP2 | RESP3 |
|---|---|---|
| Element popped | Two-element array: the key, then the element | Same |
| Timeout expired | Nil array | Null |
Errors:
ERR timeout is not a float or out of rangeiftimeoutis not a number.ERR timeout is negativeiftimeoutis below 0.ERR timeout is out of rangeiftimeoutis too large.WRONGTYPEif a key reached before the first non-empty list holds a value that is not a list.
Examples
Section titled “Examples”127.0.0.1:6379> RPUSH jobs j1 j2(integer) 2127.0.0.1:6379> BLPOP empty jobs 51) "jobs"2) "j1"127.0.0.1:6379> BLPOP empty 1.5(nil)(1.50s)Waiting for work in one client:
127.0.0.1:6379> BLPOP jobs:new 0and pushing from another:
127.0.0.1:6379> RPUSH jobs:new "build-42"(integer) 1The first client then receives:
1) "jobs:new"2) "build-42"Compatibility
Section titled “Compatibility”Same as Redis 7.4 and Valkey 8.
See also
Section titled “See also”Was this page helpful?
Thanks for the feedback.