Prefer LMOVE with RIGHT and LEFT in new code: LMOVE <source> <destination> RIGHT LEFT.
Use RPOPLPUSH to atomically move an element from the tail of one list to the head of another, returning the element.
If the source is empty nothing happens and the reply is null. Source and destination may be the same key, which rotates the list: the tail element becomes the new head, so repeated calls cycle through a list of items forever, a handy pattern for round-robin scheduling.
LMOVE does the same thing but lets you choose both ends, and BRPOPLPUSH is the blocking form.
Syntax#
Arguments#
| Argument | Required | Repeatable | Description |
|---|---|---|---|
<source> | Yes | No | Redis key used as source. |
<destination> | Yes | No | Redis key used as destination. |
Response#
The reply reports the result of the operation. Error replies have the same shape in RESP2 and RESP3 and are surfaced as exceptions by the SDKs below.
| Protocol | Reply |
|---|---|
| RESP2 | Bulk string or Null bulk string or null array |
| RESP3 | Bulk string or Null |
Client libraries often decode bulk strings, maps, sets, and numeric strings into language-native values. The table describes the Redis wire reply.
Examples#
TCP examples use the TLS REDIS_URL from the Upstash console. REST examples use UPSTASH_REDIS_REST_URL and UPSTASH_REDIS_REST_TOKEN.
Redis CLI
@upstash/redis
This command is not supported yet in @upstash/redis.