33 lines
908 B
Markdown
33 lines
908 B
Markdown
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"`:
|
|
|
|
```cli
|
|
INCR mycounter
|
|
GETSET mycounter "0"
|
|
GET mycounter
|
|
```
|
|
|
|
As per Redis 6.2, GETSET is considered deprecated. Please prefer `SET` with
|
|
`GET` parameter in new code.
|
|
|
|
@return
|
|
|
|
@bulk-string-reply: the old value stored at `key`, or `nil` when `key` did not
|
|
exist.
|
|
|
|
@examples
|
|
|
|
```cli
|
|
SET mykey "Hello"
|
|
GETSET mykey "World"
|
|
GET mykey
|
|
```
|