Use ZUNIONSTORE to compute the union of sorted sets and store it in another key.
Members present in several inputs are scored by the sum of their scores by default, or by MIN or MAX when AGGREGATE is given, with WEIGHTS scaling each input first. The destination is overwritten if it exists and deleted when the union is empty, and the reply is the number of members stored.
Merging per-day or per-source rankings into a combined one, weighting them as you go, is the typical use: the destination is an ordinary sorted set that can then be paged with ZRANGE.
Syntax#
Arguments#
| Argument | Required | Repeatable | Description |
|---|---|---|---|
<destination> | Yes | No | Redis key used as destination. |
<numkeys> | Yes | No | Number of key arguments that follow. |
<key> | Yes | Yes | Redis key targeted by the command. |
WEIGHTS <weight> | No | Yes | Multiplier applied to each input key's scores, in the order the keys were given. |
(AGGREGATE SUM | MIN | MAX) | No | No | Under AGGREGATE, choose one form: SUM; MIN; MAX. |
Important points#
numkeysmust equal the number of key arguments that immediately follow it.
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 |
| RESP3 | Integer |
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.