summaryrefslogtreecommitdiffstats
path: root/src/commands/xadd.json
diff options
context:
space:
mode:
Diffstat (limited to 'src/commands/xadd.json')
-rw-r--r--src/commands/xadd.json161
1 files changed, 161 insertions, 0 deletions
diff --git a/src/commands/xadd.json b/src/commands/xadd.json
new file mode 100644
index 0000000..2188052
--- /dev/null
+++ b/src/commands/xadd.json
@@ -0,0 +1,161 @@
+{
+ "XADD": {
+ "summary": "Appends a new message to a stream. Creates the key if it doesn't exist.",
+ "complexity": "O(1) when adding a new entry, O(N) when trimming where N being the number of entries evicted.",
+ "group": "stream",
+ "since": "5.0.0",
+ "arity": -5,
+ "function": "xaddCommand",
+ "history": [
+ [
+ "6.2.0",
+ "Added the `NOMKSTREAM` option, `MINID` trimming strategy and the `LIMIT` option."
+ ],
+ [
+ "7.0.0",
+ "Added support for the `<ms>-*` explicit ID form."
+ ]
+ ],
+ "command_flags": [
+ "WRITE",
+ "DENYOOM",
+ "FAST"
+ ],
+ "acl_categories": [
+ "STREAM"
+ ],
+ "command_tips": [
+ "NONDETERMINISTIC_OUTPUT"
+ ],
+ "key_specs": [
+ {
+ "notes": "UPDATE instead of INSERT because of the optional trimming feature",
+ "flags": [
+ "RW",
+ "UPDATE"
+ ],
+ "begin_search": {
+ "index": {
+ "pos": 1
+ }
+ },
+ "find_keys": {
+ "range": {
+ "lastkey": 0,
+ "step": 1,
+ "limit": 0
+ }
+ }
+ }
+ ],
+ "arguments": [
+ {
+ "name": "key",
+ "type": "key",
+ "key_spec_index": 0
+ },
+ {
+ "token": "NOMKSTREAM",
+ "name": "nomkstream",
+ "type": "pure-token",
+ "optional": true,
+ "since": "6.2.0"
+ },
+ {
+ "name": "trim",
+ "type": "block",
+ "optional": true,
+ "arguments": [
+ {
+ "name": "strategy",
+ "type": "oneof",
+ "arguments": [
+ {
+ "name": "maxlen",
+ "type": "pure-token",
+ "token": "MAXLEN"
+ },
+ {
+ "name": "minid",
+ "type": "pure-token",
+ "token": "MINID",
+ "since": "6.2.0"
+ }
+ ]
+ },
+ {
+ "name": "operator",
+ "type": "oneof",
+ "optional": true,
+ "arguments": [
+ {
+ "name": "equal",
+ "type": "pure-token",
+ "token": "="
+ },
+ {
+ "name": "approximately",
+ "type": "pure-token",
+ "token": "~"
+ }
+ ]
+ },
+ {
+ "name": "threshold",
+ "type": "string"
+ },
+ {
+ "token": "LIMIT",
+ "name": "count",
+ "type": "integer",
+ "optional": true,
+ "since": "6.2.0"
+ }
+ ]
+ },
+ {
+ "name": "id-selector",
+ "type": "oneof",
+ "arguments": [
+ {
+ "name": "auto-id",
+ "type": "pure-token",
+ "token": "*"
+ },
+ {
+ "name": "id",
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "name": "data",
+ "type": "block",
+ "multiple": true,
+ "arguments": [
+ {
+ "name": "field",
+ "type": "string"
+ },
+ {
+ "name": "value",
+ "type": "string"
+ }
+ ]
+ }
+ ],
+ "reply_schema": {
+ "oneOf":[
+ {
+ "description": "The ID of the added entry. The ID is the one auto-generated if * is passed as ID argument, otherwise the command just returns the same ID specified by the user during insertion.",
+ "type": "string",
+ "pattern": "[0-9]+-[0-9]+"
+ },
+ {
+ "description": "The NOMKSTREAM option is given and the key doesn't exist.",
+ "type": "null"
+ }
+ ]
+ }
+ }
+}