Use COPY to copy the value stored at one key to another key.
The destination gets an independent deep copy of the value, so later changes to either key do not affect the other, and the source key's remaining time to live is copied along with it. Any type can be copied.
By default the command does nothing and returns 0 when the destination key already exists; REPLACE overwrites it instead. DB selects the destination database index, which on Upstash is always 0.
Syntax#
Arguments#
| Argument | Required | Repeatable | Description |
|---|---|---|---|
<source> | Yes | No | Redis key used as source. |
<destination> | Yes | No | Redis key used as destination. |
DB <destination-db> | No | No | Index of the database to copy the key into. |
REPLACE | No | No | Allow replacement of an existing 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 | Integer: 1 if the key was copied, 0 otherwise |
| RESP3 | Integer: 1 if the key was copied, 0 otherwise |
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.