GETSET key value

As of Redis version 6.2.0, this command is regarded as deprecated.

It can be replaced by SET with the !GET argument when migrating or writing new code.

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 operation.

Design pattern

GETSET can be used together with INCR for counting with atomic reset. For example: a process may call 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> INCR mycounter
TBD
redis> GETSET mycounter "0"
TBD
redis> GET mycounter
TBD
redis> ```
TBD
redis> @return
TBD
redis> @bulk-string-reply: the old value stored at `key`, or `nil` when `key` did not exist.
TBD
redis> @examples
TBD
redis> ```cli
TBD
redis> SET mykey "Hello"
TBD
redis> GETSET mykey "World"
TBD
redis> GET mykey