summaryrefslogtreecommitdiffstats
path: root/iredis/data/commands/getset.md
blob: dd7aee765cd3c9a38bae2f74e3a7e2b27389d159 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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
```

@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
```