Back to Redis

GETSET

content/commands/getset.md

latest1.9 KB
Original Source

Atomically sets key to value and returns the old value stored at key. Returns an error when key exists but does not hold a string value. Any previous time to live associated with the key is discarded on successful [SET]({{< relref "/commands/set" >}}) operation.

Design pattern

GETSET can be used together with [INCR]({{< relref "/commands/incr" >}}) for counting with atomic reset. For example: a process may call [INCR]({{< relref "/commands/incr" >}}) against the key mycounter every time some event occurs, but from time to time we need to get the value of the counter and reset it to zero atomically. This can be done using GETSET mycounter "0":

{{% redis-cli %}} INCR mycounter GETSET mycounter "0" GET mycounter {{% /redis-cli %}}

Examples

{{% redis-cli %}} SET mykey "Hello" GETSET mykey "World" GET mykey {{% /redis-cli %}}

Redis Software and Redis Cloud compatibility

| Redis Software | Redis Cloud | <span style="min-width: 9em; display: table-cell">Notes</span> | |:----------------------|:-----------------|:------| | <span title="Supported">✅ Standard</span> <span title="Supported"><nobr>✅ Active-Active</nobr></span> | <span title="Supported">✅ Standard</span> <span title="Supported"><nobr>✅ Active-Active</nobr></span> | Deprecated as of Redis v6.2.0. |

Return information

{{< multitabs id="getset-return-info" tab1="RESP2" tab2="RESP3" >}}

One of the following:

-tab-sep-

One of the following:

{{< /multitabs >}}