summaryrefslogtreecommitdiffstats
path: root/iredis/data/commands/getset.md
diff options
context:
space:
mode:
Diffstat (limited to 'iredis/data/commands/getset.md')
-rw-r--r--iredis/data/commands/getset.md28
1 files changed, 28 insertions, 0 deletions
diff --git a/iredis/data/commands/getset.md b/iredis/data/commands/getset.md
new file mode 100644
index 0000000..20b86a2
--- /dev/null
+++ b/iredis/data/commands/getset.md
@@ -0,0 +1,28 @@
+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.
+
+## 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
+```