From 740e902c22b28e275507c2f7fdf14a2980d474db Mon Sep 17 00:00:00 2001 From: "David W. Dougherty" Date: Fri, 24 Jul 2026 07:36:45 -0700 Subject: [PATCH] DEV: update data/commands_core.json from GA build --- data/commands.json | 22810 --------------------- data/commands_core.json | 41003 +++++++++++++++++++++++++------------- 2 files changed, 27389 insertions(+), 36424 deletions(-) delete mode 100644 data/commands.json diff --git a/data/commands.json b/data/commands.json deleted file mode 100644 index 3fc9a464ae..0000000000 --- a/data/commands.json +++ /dev/null @@ -1,22810 +0,0 @@ -{ - "ACL": { - "summary": "A container for Access List Control commands.", - "since": "6.0.0", - "group": "server", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" - ], - "arity": -2 - }, - "ACL CAT": { - "summary": "Lists the ACL categories, or the commands inside a category.", - "since": "6.0.0", - "group": "server", - "complexity": "O(1) since the categories and commands are a fixed set.", - "acl_categories": [ - "@slow" - ], - "arity": -2, - "arguments": [ - { - "name": "category", - "type": "string", - "display_text": "category", - "optional": true - } - ], - "command_flags": [ - "noscript", - "loading", - "stale" - ] - }, - "ACL DELUSER": { - "summary": "Deletes ACL users, and terminates their connections.", - "since": "6.0.0", - "group": "server", - "complexity": "O(1) amortized time considering the typical user.", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -3, - "arguments": [ - { - "name": "username", - "type": "string", - "display_text": "username", - "multiple": true - } - ], - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ], - "hints": [ - "request_policy:all_nodes", - "response_policy:all_succeeded" - ] - }, - "ACL DRYRUN": { - "summary": "Simulates the execution of a command by a user, without executing the command.", - "since": "7.0.0", - "group": "server", - "complexity": "O(1).", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -4, - "arguments": [ - { - "name": "username", - "type": "string", - "display_text": "username" - }, - { - "name": "command", - "type": "string", - "display_text": "command" - }, - { - "name": "arg", - "type": "string", - "display_text": "arg", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ] - }, - "ACL GENPASS": { - "summary": "Generates a pseudorandom, secure password that can be used to identify ACL users.", - "since": "6.0.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@slow" - ], - "arity": -2, - "arguments": [ - { - "name": "bits", - "type": "integer", - "display_text": "bits", - "optional": true - } - ], - "command_flags": [ - "noscript", - "loading", - "stale" - ] - }, - "ACL GETUSER": { - "summary": "Lists the ACL rules of a user.", - "since": "6.0.0", - "group": "server", - "complexity": "O(N). Where N is the number of password, command and pattern rules that the user has.", - "history": [ - [ - "6.2.0", - "Added Pub/Sub channel patterns." - ], - [ - "7.0.0", - "Added selectors and changed the format of key and channel patterns from a list to their rule representation." - ] - ], - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 3, - "arguments": [ - { - "name": "username", - "type": "string", - "display_text": "username" - } - ], - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ] - }, - "ACL HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "6.0.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@slow" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "ACL LIST": { - "summary": "Dumps the effective rules in ACL file format.", - "since": "6.0.0", - "group": "server", - "complexity": "O(N). Where N is the number of configured users.", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ] - }, - "ACL LOAD": { - "summary": "Reloads the rules from the configured ACL file.", - "since": "6.0.0", - "group": "server", - "complexity": "O(N). Where N is the number of configured users.", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ] - }, - "ACL LOG": { - "summary": "Lists recent security events generated due to ACL rules.", - "since": "6.0.0", - "group": "server", - "complexity": "O(N) with N being the number of entries shown.", - "history": [ - [ - "7.2.0", - "Added entry ID, timestamp created, and timestamp last updated." - ] - ], - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -2, - "arguments": [ - { - "name": "operation", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "count", - "type": "integer", - "display_text": "count" - }, - { - "name": "reset", - "type": "pure-token", - "display_text": "reset", - "token": "RESET" - } - ] - } - ], - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ] - }, - "ACL SAVE": { - "summary": "Saves the effective ACL rules in the configured ACL file.", - "since": "6.0.0", - "group": "server", - "complexity": "O(N). Where N is the number of configured users.", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ], - "hints": [ - "request_policy:all_nodes", - "response_policy:all_succeeded" - ] - }, - "ACL SETUSER": { - "summary": "Creates and modifies an ACL user and its rules.", - "since": "6.0.0", - "group": "server", - "complexity": "O(N). Where N is the number of rules provided.", - "history": [ - [ - "6.2.0", - "Added Pub/Sub channel patterns." - ], - [ - "7.0.0", - "Added selectors and key based permissions." - ] - ], - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -3, - "arguments": [ - { - "name": "username", - "type": "string", - "display_text": "username" - }, - { - "name": "rule", - "type": "string", - "display_text": "rule", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ], - "hints": [ - "request_policy:all_nodes", - "response_policy:all_succeeded" - ] - }, - "ACL USERS": { - "summary": "Lists all ACL users.", - "since": "6.0.0", - "group": "server", - "complexity": "O(N). Where N is the number of configured users.", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ] - }, - "ACL WHOAMI": { - "summary": "Returns the authenticated username of the current connection.", - "since": "6.0.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@slow" - ], - "arity": 2, - "command_flags": [ - "noscript", - "loading", - "stale" - ] - }, - "APPEND": { - "summary": "Appends a string to the value of a key. Creates the key if it doesn't exist.", - "since": "2.0.0", - "group": "string", - "complexity": "O(1). The amortized time complexity is O(1) assuming the appended value is small and the already present value is of any size, since the dynamic string library used by Redis will double the free space available on every reallocation.", - "acl_categories": [ - "@write", - "@string", - "@fast" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "insert": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "value", - "type": "string", - "display_text": "value" - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "ARCOUNT": { - "summary": "Returns the number of non-empty elements in an array.", - "since": "8.8.0", - "group": "array", - "complexity": "O(1)", - "acl_categories": [ - "@read", - "@array", - "@fast" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "ARDEL": { - "summary": "Deletes elements at the specified indices in an array.", - "since": "8.8.0", - "group": "array", - "complexity": "O(N) where N is the number of indices to delete", - "acl_categories": [ - "@write", - "@array", - "@fast" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "index", - "type": "integer", - "display_text": "index", - "multiple": true - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "ARDELRANGE": { - "summary": "Deletes elements in one or more ranges.", - "since": "8.8.0", - "group": "array", - "complexity": "Proportional to the number of existing elements / slices touched, not to the numeric span of the requested ranges", - "acl_categories": [ - "@write", - "@array", - "@slow" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "range", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "start", - "type": "integer", - "display_text": "start" - }, - { - "name": "end", - "type": "integer", - "display_text": "end" - } - ] - } - ], - "command_flags": [ - "write" - ] - }, - "ARGET": { - "summary": "Gets the value at an index in an array.", - "since": "8.8.0", - "group": "array", - "complexity": "O(1)", - "acl_categories": [ - "@read", - "@array", - "@fast" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "index", - "type": "integer", - "display_text": "index" - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "ARGETRANGE": { - "summary": "Gets values in a range of indices.", - "since": "8.8.0", - "group": "array", - "complexity": "O(N) where N is the range length", - "acl_categories": [ - "@read", - "@array", - "@slow" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "start", - "type": "integer", - "display_text": "start" - }, - { - "name": "end", - "type": "integer", - "display_text": "end" - } - ], - "command_flags": [ - "readonly" - ] - }, - "ARGREP": { - "summary": "Searches array elements in a range using textual predicates.", - "since": "8.8.0", - "group": "array", - "complexity": "O(P * C) where P is the number of visited positions in touched slices and C is the cost of evaluating the predicates on one existing element.", - "acl_categories": [ - "@read", - "@array", - "@slow" - ], - "arity": -6, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "start", - "type": "string", - "display_text": "start" - }, - { - "name": "end", - "type": "string", - "display_text": "end" - }, - { - "name": "predicate", - "type": "oneof", - "multiple": true, - "arguments": [ - { - "name": "exact", - "type": "block", - "arguments": [ - { - "name": "exact", - "type": "pure-token", - "display_text": "exact", - "token": "EXACT" - }, - { - "name": "string", - "type": "string", - "display_text": "string" - } - ] - }, - { - "name": "match", - "type": "block", - "arguments": [ - { - "name": "match", - "type": "pure-token", - "display_text": "match", - "token": "MATCH" - }, - { - "name": "string", - "type": "string", - "display_text": "string" - } - ] - }, - { - "name": "glob", - "type": "block", - "arguments": [ - { - "name": "glob", - "type": "pure-token", - "display_text": "glob", - "token": "GLOB" - }, - { - "name": "pattern", - "type": "string", - "display_text": "pattern" - } - ] - }, - { - "name": "re", - "type": "block", - "arguments": [ - { - "name": "re", - "type": "pure-token", - "display_text": "re", - "token": "RE" - }, - { - "name": "pattern", - "type": "string", - "display_text": "pattern" - } - ] - } - ] - }, - { - "name": "options", - "type": "oneof", - "optional": true, - "multiple": true, - "arguments": [ - { - "name": "and", - "type": "pure-token", - "display_text": "and", - "token": "AND" - }, - { - "name": "or", - "type": "pure-token", - "display_text": "or", - "token": "OR" - }, - { - "name": "limit", - "type": "integer", - "display_text": "limit", - "token": "LIMIT" - }, - { - "name": "withvalues", - "type": "pure-token", - "display_text": "withvalues", - "token": "WITHVALUES" - }, - { - "name": "nocase", - "type": "pure-token", - "display_text": "nocase", - "token": "NOCASE" - } - ] - } - ], - "command_flags": [ - "readonly" - ] - }, - "ARINFO": { - "summary": "Returns metadata about an array.", - "since": "8.8.0", - "group": "array", - "complexity": "O(1), or O(N) with FULL option where N is the number of slices.", - "acl_categories": [ - "@read", - "@array", - "@slow" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "full", - "type": "pure-token", - "display_text": "full", - "token": "FULL", - "optional": true - } - ], - "command_flags": [ - "readonly" - ] - }, - "ARINSERT": { - "summary": "Inserts one or more values at consecutive indices.", - "since": "8.8.0", - "group": "array", - "complexity": "O(N) where N is the number of values", - "acl_categories": [ - "@write", - "@array", - "@fast" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "value", - "type": "string", - "display_text": "value", - "multiple": true - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "ARLASTITEMS": { - "summary": "Returns the most recently inserted elements.", - "since": "8.8.0", - "group": "array", - "complexity": "O(N) where N is the count", - "acl_categories": [ - "@read", - "@array", - "@slow" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "count", - "type": "integer", - "display_text": "count" - }, - { - "name": "rev", - "type": "pure-token", - "display_text": "rev", - "token": "REV", - "optional": true - } - ], - "command_flags": [ - "readonly" - ] - }, - "ARLEN": { - "summary": "Returns the length of an array (max index + 1).", - "since": "8.8.0", - "group": "array", - "complexity": "O(1)", - "acl_categories": [ - "@read", - "@array", - "@fast" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "ARMGET": { - "summary": "Gets values at multiple indices in an array.", - "since": "8.8.0", - "group": "array", - "complexity": "O(N) where N is the number of indices", - "acl_categories": [ - "@read", - "@array", - "@fast" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "index", - "type": "integer", - "display_text": "index", - "multiple": true - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "ARMSET": { - "summary": "Sets multiple index-value pairs in an array.", - "since": "8.8.0", - "group": "array", - "complexity": "O(N) where N is the number of pairs", - "acl_categories": [ - "@write", - "@array", - "@fast" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "data", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "index", - "type": "integer", - "display_text": "index" - }, - { - "name": "value", - "type": "string", - "display_text": "value" - } - ] - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "ARNEXT": { - "summary": "Returns the next index ARINSERT would use.", - "since": "8.8.0", - "group": "array", - "complexity": "O(1)", - "acl_categories": [ - "@read", - "@array", - "@fast" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "AROP": { - "summary": "Performs aggregate operations on array elements in a range.", - "since": "8.8.0", - "group": "array", - "complexity": "O(P) where P is visited positions in touched slices (dense scanned slots + sparse entries), with worst-case O(|end-start|+1) and typical case close to O(N), where N is the number of existing elements in range.", - "acl_categories": [ - "@read", - "@array", - "@slow" - ], - "arity": -5, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "start", - "type": "integer", - "display_text": "start" - }, - { - "name": "end", - "type": "integer", - "display_text": "end" - }, - { - "name": "operation", - "type": "oneof", - "arguments": [ - { - "name": "sum", - "type": "pure-token", - "display_text": "sum", - "token": "SUM" - }, - { - "name": "min", - "type": "pure-token", - "display_text": "min", - "token": "MIN" - }, - { - "name": "max", - "type": "pure-token", - "display_text": "max", - "token": "MAX" - }, - { - "name": "and", - "type": "pure-token", - "display_text": "and", - "token": "AND" - }, - { - "name": "or", - "type": "pure-token", - "display_text": "or", - "token": "OR" - }, - { - "name": "xor", - "type": "pure-token", - "display_text": "xor", - "token": "XOR" - }, - { - "name": "match", - "type": "block", - "arguments": [ - { - "name": "match", - "type": "pure-token", - "display_text": "match", - "token": "MATCH" - }, - { - "name": "value", - "type": "string", - "display_text": "value" - } - ] - }, - { - "name": "used", - "type": "pure-token", - "display_text": "used", - "token": "USED" - } - ] - } - ], - "command_flags": [ - "readonly" - ] - }, - "ARRING": { - "summary": "Inserts values into a ring buffer of specified size, wrapping and truncating as needed.", - "since": "8.8.0", - "group": "array", - "complexity": "O(M) normally, O(N+M) on ring resize, where N is the maximum of the old and new ring size and M is the number of inserted values", - "acl_categories": [ - "@write", - "@array", - "@slow" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "size", - "type": "integer", - "display_text": "size" - }, - { - "name": "value", - "type": "string", - "display_text": "value", - "multiple": true - } - ], - "command_flags": [ - "write", - "denyoom" - ] - }, - "ARSCAN": { - "summary": "Iterates existing elements in a range, returning index-value pairs.", - "since": "8.8.0", - "group": "array", - "complexity": "O(P) where P is visited positions in touched slices (dense scanned slots + sparse entries), with worst-case O(|end-start|+1) and typical case close to O(N), where N is the number of existing elements in range.", - "acl_categories": [ - "@read", - "@array", - "@slow" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "start", - "type": "integer", - "display_text": "start" - }, - { - "name": "end", - "type": "integer", - "display_text": "end" - }, - { - "name": "limit", - "type": "integer", - "display_text": "limit", - "token": "LIMIT", - "optional": true - } - ], - "command_flags": [ - "readonly" - ] - }, - "ARSEEK": { - "summary": "Sets the ARINSERT / ARRING cursor to a specific index.", - "since": "8.8.0", - "group": "array", - "complexity": "O(1)", - "acl_categories": [ - "@write", - "@array", - "@fast" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "index", - "type": "integer", - "display_text": "index" - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "ARSET": { - "summary": "Sets one or more contiguous values starting at an index in an array.", - "since": "8.8.0", - "group": "array", - "complexity": "O(N) where N is the number of values", - "acl_categories": [ - "@write", - "@array", - "@fast" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "index", - "type": "integer", - "display_text": "index" - }, - { - "name": "value", - "type": "string", - "display_text": "value", - "multiple": true - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "ASKING": { - "summary": "Signals that a cluster client is following an -ASK redirect.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", - "acl_categories": [ - "@fast", - "@connection" - ], - "arity": 1, - "command_flags": [ - "fast" - ] - }, - "AUTH": { - "summary": "Authenticates the connection.", - "since": "1.0.0", - "group": "connection", - "complexity": "O(N) where N is the number of passwords defined for the user", - "history": [ - [ - "6.0.0", - "Added ACL style (username and password)." - ] - ], - "acl_categories": [ - "@fast", - "@connection" - ], - "arity": -2, - "arguments": [ - { - "name": "username", - "type": "string", - "display_text": "username", - "since": "6.0.0", - "optional": true - }, - { - "name": "password", - "type": "string", - "display_text": "password" - } - ], - "command_flags": [ - "noscript", - "loading", - "stale", - "fast", - "no_auth", - "allow_busy" - ] - }, - "BGREWRITEAOF": { - "summary": "Asynchronously rewrites the append-only file to disk.", - "since": "1.0.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 1, - "command_flags": [ - "admin", - "noscript", - "no_async_loading" - ] - }, - "BGSAVE": { - "summary": "Asynchronously saves the database(s) to disk.", - "since": "1.0.0", - "group": "server", - "complexity": "O(1)", - "history": [ - [ - "3.2.2", - "Added the `SCHEDULE` option." - ] - ], - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -1, - "arguments": [ - { - "name": "schedule", - "type": "pure-token", - "display_text": "schedule", - "token": "SCHEDULE", - "since": "3.2.2", - "optional": true - } - ], - "command_flags": [ - "admin", - "noscript", - "no_async_loading" - ] - }, - "BITCOUNT": { - "summary": "Counts the number of set bits (population counting) in a string.", - "since": "2.6.0", - "group": "bitmap", - "complexity": "O(N)", - "history": [ - [ - "7.0.0", - "Added the `BYTE|BIT` option." - ] - ], - "acl_categories": [ - "@read", - "@bitmap", - "@slow" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "range", - "type": "block", - "optional": true, - "arguments": [ - { - "name": "start", - "type": "integer", - "display_text": "start" - }, - { - "name": "end", - "type": "integer", - "display_text": "end" - }, - { - "name": "unit", - "type": "oneof", - "since": "7.0.0", - "optional": true, - "arguments": [ - { - "name": "byte", - "type": "pure-token", - "display_text": "byte", - "token": "BYTE" - }, - { - "name": "bit", - "type": "pure-token", - "display_text": "bit", - "token": "BIT" - } - ] - } - ] - } - ], - "command_flags": [ - "readonly" - ] - }, - "BITFIELD": { - "summary": "Performs arbitrary bitfield integer operations on strings.", - "since": "3.2.0", - "group": "bitmap", - "complexity": "O(1) for each subcommand specified", - "acl_categories": [ - "@write", - "@bitmap", - "@slow" - ], - "arity": -2, - "key_specs": [ - { - "notes": "This command allows both access and modification of the key", - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true, - "variable_flags": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "operation", - "type": "oneof", - "optional": true, - "multiple": true, - "arguments": [ - { - "name": "get-block", - "type": "block", - "token": "GET", - "arguments": [ - { - "name": "encoding", - "type": "string", - "display_text": "encoding" - }, - { - "name": "offset", - "type": "integer", - "display_text": "offset" - } - ] - }, - { - "name": "write", - "type": "block", - "arguments": [ - { - "name": "overflow-block", - "type": "oneof", - "token": "OVERFLOW", - "optional": true, - "arguments": [ - { - "name": "wrap", - "type": "pure-token", - "display_text": "wrap", - "token": "WRAP" - }, - { - "name": "sat", - "type": "pure-token", - "display_text": "sat", - "token": "SAT" - }, - { - "name": "fail", - "type": "pure-token", - "display_text": "fail", - "token": "FAIL" - } - ] - }, - { - "name": "write-operation", - "type": "oneof", - "arguments": [ - { - "name": "set-block", - "type": "block", - "token": "SET", - "arguments": [ - { - "name": "encoding", - "type": "string", - "display_text": "encoding" - }, - { - "name": "offset", - "type": "integer", - "display_text": "offset" - }, - { - "name": "value", - "type": "integer", - "display_text": "value" - } - ] - }, - { - "name": "incrby-block", - "type": "block", - "token": "INCRBY", - "arguments": [ - { - "name": "encoding", - "type": "string", - "display_text": "encoding" - }, - { - "name": "offset", - "type": "integer", - "display_text": "offset" - }, - { - "name": "increment", - "type": "integer", - "display_text": "increment" - } - ] - } - ] - } - ] - } - ] - } - ], - "command_flags": [ - "write", - "denyoom" - ] - }, - "BITFIELD_RO": { - "summary": "Performs arbitrary read-only bitfield integer operations on strings.", - "since": "6.0.0", - "group": "bitmap", - "complexity": "O(1) for each subcommand specified", - "acl_categories": [ - "@read", - "@bitmap", - "@fast" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "get-block", - "type": "block", - "token": "GET", - "optional": true, - "multiple": true, - "multiple_token": true, - "arguments": [ - { - "name": "encoding", - "type": "string", - "display_text": "encoding" - }, - { - "name": "offset", - "type": "integer", - "display_text": "offset" - } - ] - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "BITOP": { - "summary": "Performs bitwise operations on multiple strings, and stores the result.", - "since": "2.6.0", - "group": "bitmap", - "complexity": "O(N)", - "acl_categories": [ - "@write", - "@bitmap", - "@slow" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, - "update": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 3 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "operation", - "type": "oneof", - "arguments": [ - { - "name": "and", - "type": "pure-token", - "display_text": "and", - "token": "AND" - }, - { - "name": "or", - "type": "pure-token", - "display_text": "or", - "token": "OR" - }, - { - "name": "xor", - "type": "pure-token", - "display_text": "xor", - "token": "XOR" - }, - { - "name": "not", - "type": "pure-token", - "display_text": "not", - "token": "NOT" - }, - { - "name": "diff", - "type": "pure-token", - "display_text": "diff", - "token": "DIFF" - }, - { - "name": "diff1", - "type": "pure-token", - "display_text": "diff1", - "token": "DIFF1" - }, - { - "name": "andor", - "type": "pure-token", - "display_text": "andor", - "token": "ANDOR" - }, - { - "name": "one", - "type": "pure-token", - "display_text": "one", - "token": "ONE" - } - ] - }, - { - "name": "destkey", - "type": "key", - "display_text": "destkey", - "key_spec_index": 0 - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 1, - "multiple": true - } - ], - "command_flags": [ - "write", - "denyoom" - ] - }, - "BITPOS": { - "summary": "Finds the first set (1) or clear (0) bit in a string.", - "since": "2.8.7", - "group": "bitmap", - "complexity": "O(N)", - "history": [ - [ - "7.0.0", - "Added the `BYTE|BIT` option." - ] - ], - "acl_categories": [ - "@read", - "@bitmap", - "@slow" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "bit", - "type": "integer", - "display_text": "bit" - }, - { - "name": "range", - "type": "block", - "optional": true, - "arguments": [ - { - "name": "start", - "type": "integer", - "display_text": "start" - }, - { - "name": "end-unit-block", - "type": "block", - "optional": true, - "arguments": [ - { - "name": "end", - "type": "integer", - "display_text": "end" - }, - { - "name": "unit", - "type": "oneof", - "since": "7.0.0", - "optional": true, - "arguments": [ - { - "name": "byte", - "type": "pure-token", - "display_text": "byte", - "token": "BYTE" - }, - { - "name": "bit", - "type": "pure-token", - "display_text": "bit", - "token": "BIT" - } - ] - } - ] - } - ] - } - ], - "command_flags": [ - "readonly" - ] - }, - "BLMOVE": { - "summary": "Pops an element from a list, pushes it to another list and returns it. Blocks until an element is available otherwise. Deletes the list if the last element was moved.", - "since": "6.2.0", - "group": "list", - "complexity": "O(1)", - "acl_categories": [ - "@write", - "@list", - "@slow", - "@blocking" - ], - "arity": 6, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "delete": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "insert": true - } - ], - "arguments": [ - { - "name": "source", - "type": "key", - "display_text": "source", - "key_spec_index": 0 - }, - { - "name": "destination", - "type": "key", - "display_text": "destination", - "key_spec_index": 1 - }, - { - "name": "wherefrom", - "type": "oneof", - "arguments": [ - { - "name": "left", - "type": "pure-token", - "display_text": "left", - "token": "LEFT" - }, - { - "name": "right", - "type": "pure-token", - "display_text": "right", - "token": "RIGHT" - } - ] - }, - { - "name": "whereto", - "type": "oneof", - "arguments": [ - { - "name": "left", - "type": "pure-token", - "display_text": "left", - "token": "LEFT" - }, - { - "name": "right", - "type": "pure-token", - "display_text": "right", - "token": "RIGHT" - } - ] - }, - { - "name": "timeout", - "type": "double", - "display_text": "timeout" - } - ], - "command_flags": [ - "write", - "denyoom", - "blocking" - ] - }, - "BLMPOP": { - "summary": "Pops the first element from one of multiple lists. Blocks until an element is available otherwise. Deletes the list if the last element was popped.", - "since": "7.0.0", - "group": "list", - "complexity": "O(N+M) where N is the number of provided keys and M is the number of elements returned.", - "acl_categories": [ - "@write", - "@list", - "@slow", - "@blocking" - ], - "arity": -5, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RW": true, - "access": true, - "delete": true - } - ], - "arguments": [ - { - "name": "timeout", - "type": "double", - "display_text": "timeout" - }, - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - }, - { - "name": "where", - "type": "oneof", - "arguments": [ - { - "name": "left", - "type": "pure-token", - "display_text": "left", - "token": "LEFT" - }, - { - "name": "right", - "type": "pure-token", - "display_text": "right", - "token": "RIGHT" - } - ] - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true - } - ], - "command_flags": [ - "write", - "blocking", - "movablekeys" - ] - }, - "BLPOP": { - "summary": "Removes and returns the first element in a list. Blocks until an element is available otherwise. Deletes the list if the last element was popped.", - "since": "2.0.0", - "group": "list", - "complexity": "O(N) where N is the number of provided keys.", - "history": [ - [ - "6.0.0", - "`timeout` is interpreted as a double instead of an integer." - ] - ], - "acl_categories": [ - "@write", - "@list", - "@slow", - "@blocking" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -2, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - }, - { - "name": "timeout", - "type": "double", - "display_text": "timeout" - } - ], - "command_flags": [ - "write", - "blocking" - ] - }, - "BRPOP": { - "summary": "Removes and returns the last element in a list. Blocks until an element is available otherwise. Deletes the list if the last element was popped.", - "since": "2.0.0", - "group": "list", - "complexity": "O(N) where N is the number of provided keys.", - "history": [ - [ - "6.0.0", - "`timeout` is interpreted as a double instead of an integer." - ] - ], - "acl_categories": [ - "@write", - "@list", - "@slow", - "@blocking" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -2, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - }, - { - "name": "timeout", - "type": "double", - "display_text": "timeout" - } - ], - "command_flags": [ - "write", - "blocking" - ] - }, - "BRPOPLPUSH": { - "summary": "Pops an element from a list, pushes it to another list and returns it. Block until an element is available otherwise. Deletes the list if the last element was popped.", - "since": "2.2.0", - "group": "list", - "complexity": "O(1)", - "deprecated_since": "6.2.0", - "replaced_by": "`BLMOVE` with the `RIGHT` and `LEFT` arguments", - "history": [ - [ - "6.0.0", - "`timeout` is interpreted as a double instead of an integer." - ] - ], - "acl_categories": [ - "@write", - "@list", - "@slow", - "@blocking" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "delete": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "insert": true - } - ], - "arguments": [ - { - "name": "source", - "type": "key", - "display_text": "source", - "key_spec_index": 0 - }, - { - "name": "destination", - "type": "key", - "display_text": "destination", - "key_spec_index": 1 - }, - { - "name": "timeout", - "type": "double", - "display_text": "timeout" - } - ], - "command_flags": [ - "write", - "denyoom", - "blocking" - ], - "doc_flags": [ - "deprecated" - ] - }, - "BZMPOP": { - "summary": "Removes and returns a member by score from one or more sorted sets. Blocks until a member is available otherwise. Deletes the sorted set if the last element was popped.", - "since": "7.0.0", - "group": "sorted-set", - "complexity": "O(K) + O(M*log(N)) where K is the number of provided keys, N being the number of elements in the sorted set, and M being the number of elements popped.", - "acl_categories": [ - "@write", - "@sortedset", - "@slow", - "@blocking" - ], - "arity": -5, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RW": true, - "access": true, - "delete": true - } - ], - "arguments": [ - { - "name": "timeout", - "type": "double", - "display_text": "timeout" - }, - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - }, - { - "name": "where", - "type": "oneof", - "arguments": [ - { - "name": "min", - "type": "pure-token", - "display_text": "min", - "token": "MIN" - }, - { - "name": "max", - "type": "pure-token", - "display_text": "max", - "token": "MAX" - } - ] - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true - } - ], - "command_flags": [ - "write", - "blocking", - "movablekeys" - ] - }, - "BZPOPMAX": { - "summary": "Removes and returns the member with the highest score from one or more sorted sets. Blocks until a member available otherwise. Deletes the sorted set if the last element was popped.", - "since": "5.0.0", - "group": "sorted-set", - "complexity": "O(log(N)) with N being the number of elements in the sorted set.", - "history": [ - [ - "6.0.0", - "`timeout` is interpreted as a double instead of an integer." - ] - ], - "acl_categories": [ - "@write", - "@sortedset", - "@fast", - "@blocking" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -2, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - }, - { - "name": "timeout", - "type": "double", - "display_text": "timeout" - } - ], - "command_flags": [ - "write", - "blocking", - "fast" - ] - }, - "BZPOPMIN": { - "summary": "Removes and returns the member with the lowest score from one or more sorted sets. Blocks until a member is available otherwise. Deletes the sorted set if the last element was popped.", - "since": "5.0.0", - "group": "sorted-set", - "complexity": "O(log(N)) with N being the number of elements in the sorted set.", - "history": [ - [ - "6.0.0", - "`timeout` is interpreted as a double instead of an integer." - ] - ], - "acl_categories": [ - "@write", - "@sortedset", - "@fast", - "@blocking" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -2, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - }, - { - "name": "timeout", - "type": "double", - "display_text": "timeout" - } - ], - "command_flags": [ - "write", - "blocking", - "fast" - ] - }, - "CLIENT": { - "summary": "A container for client connection commands.", - "since": "2.4.0", - "group": "connection", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" - ], - "arity": -2 - }, - "CLIENT CACHING": { - "summary": "Instructs the server whether to track the keys in the next request.", - "since": "6.0.0", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": 3, - "arguments": [ - { - "name": "mode", - "type": "oneof", - "arguments": [ - { - "name": "yes", - "type": "pure-token", - "display_text": "yes", - "token": "YES" - }, - { - "name": "no", - "type": "pure-token", - "display_text": "no", - "token": "NO" - } - ] - } - ], - "command_flags": [ - "noscript", - "loading", - "stale" - ] - }, - "CLIENT GETNAME": { - "summary": "Returns the name of the connection.", - "since": "2.6.9", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": 2, - "command_flags": [ - "noscript", - "loading", - "stale" - ] - }, - "CLIENT GETREDIR": { - "summary": "Returns the client ID to which the connection's tracking notifications are redirected.", - "since": "6.0.0", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": 2, - "command_flags": [ - "noscript", - "loading", - "stale" - ] - }, - "CLIENT HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "5.0.0", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "CLIENT ID": { - "summary": "Returns the unique client ID of the connection.", - "since": "5.0.0", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": 2, - "command_flags": [ - "noscript", - "loading", - "stale" - ] - }, - "CLIENT INFO": { - "summary": "Returns information about the connection.", - "since": "6.2.0", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": 2, - "command_flags": [ - "noscript", - "loading", - "stale" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "CLIENT KILL": { - "summary": "Terminates open connections.", - "since": "2.4.0", - "group": "connection", - "complexity": "O(N) where N is the number of client connections", - "history": [ - [ - "2.8.12", - "Added new filter format." - ], - [ - "2.8.12", - "`ID` option." - ], - [ - "3.2.0", - "Added `master` type in for `TYPE` option." - ], - [ - "5.0.0", - "Replaced `slave` `TYPE` with `replica`. `slave` still supported for backward compatibility." - ], - [ - "6.2.0", - "`LADDR` option." - ], - [ - "7.4.0", - "`MAXAGE` option." - ] - ], - "acl_categories": [ - "@admin", - "@slow", - "@dangerous", - "@connection" - ], - "arity": -3, - "arguments": [ - { - "name": "filter", - "type": "oneof", - "arguments": [ - { - "name": "old-format", - "type": "string", - "display_text": "ip:port", - "deprecated_since": "2.8.12" - }, - { - "name": "new-format", - "type": "oneof", - "multiple": true, - "arguments": [ - { - "name": "client-id", - "type": "integer", - "display_text": "client-id", - "token": "ID", - "since": "2.8.12", - "optional": true - }, - { - "name": "client-type", - "type": "oneof", - "token": "TYPE", - "since": "2.8.12", - "optional": true, - "arguments": [ - { - "name": "normal", - "type": "pure-token", - "display_text": "normal", - "token": "NORMAL" - }, - { - "name": "master", - "type": "pure-token", - "display_text": "master", - "token": "MASTER", - "since": "3.2.0" - }, - { - "name": "slave", - "type": "pure-token", - "display_text": "slave", - "token": "SLAVE" - }, - { - "name": "replica", - "type": "pure-token", - "display_text": "replica", - "token": "REPLICA", - "since": "5.0.0" - }, - { - "name": "pubsub", - "type": "pure-token", - "display_text": "pubsub", - "token": "PUBSUB" - } - ] - }, - { - "name": "username", - "type": "string", - "display_text": "username", - "token": "USER", - "optional": true - }, - { - "name": "addr", - "type": "string", - "display_text": "ip:port", - "token": "ADDR", - "optional": true - }, - { - "name": "laddr", - "type": "string", - "display_text": "ip:port", - "token": "LADDR", - "since": "6.2.0", - "optional": true - }, - { - "name": "skipme", - "type": "oneof", - "token": "SKIPME", - "optional": true, - "arguments": [ - { - "name": "yes", - "type": "pure-token", - "display_text": "yes", - "token": "YES" - }, - { - "name": "no", - "type": "pure-token", - "display_text": "no", - "token": "NO" - } - ] - }, - { - "name": "maxage", - "type": "integer", - "display_text": "maxage", - "token": "MAXAGE", - "since": "7.4.0", - "optional": true - } - ] - } - ] - } - ], - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ] - }, - "CLIENT LIST": { - "summary": "Lists open connections.", - "since": "2.4.0", - "group": "connection", - "complexity": "O(N) where N is the number of client connections", - "history": [ - [ - "2.8.12", - "Added unique client `id` field." - ], - [ - "5.0.0", - "Added optional `TYPE` filter." - ], - [ - "6.0.0", - "Added `user` field." - ], - [ - "6.2.0", - "Added `argv-mem`, `tot-mem`, `laddr` and `redir` fields and the optional `ID` filter." - ], - [ - "7.0.0", - "Added `resp`, `multi-mem`, `rbs` and `rbp` fields." - ], - [ - "7.0.3", - "Added `ssub` field." - ], - [ - "7.2.0", - "Added `lib-name` and `lib-ver` fields." - ], - [ - "7.4.0", - "Added `watch` field." - ], - [ - "8.0.0", - "Added `io-thread` field." - ] - ], - "acl_categories": [ - "@admin", - "@slow", - "@dangerous", - "@connection" - ], - "arity": -2, - "arguments": [ - { - "name": "client-type", - "type": "oneof", - "token": "TYPE", - "since": "5.0.0", - "optional": true, - "arguments": [ - { - "name": "normal", - "type": "pure-token", - "display_text": "normal", - "token": "NORMAL" - }, - { - "name": "master", - "type": "pure-token", - "display_text": "master", - "token": "MASTER" - }, - { - "name": "replica", - "type": "pure-token", - "display_text": "replica", - "token": "REPLICA" - }, - { - "name": "pubsub", - "type": "pure-token", - "display_text": "pubsub", - "token": "PUBSUB" - } - ] - }, - { - "name": "client-id", - "type": "integer", - "display_text": "client-id", - "token": "ID", - "since": "6.2.0", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "CLIENT NO-EVICT": { - "summary": "Sets the client eviction mode of the connection.", - "since": "7.0.0", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous", - "@connection" - ], - "arity": 3, - "arguments": [ - { - "name": "enabled", - "type": "oneof", - "arguments": [ - { - "name": "on", - "type": "pure-token", - "display_text": "on", - "token": "ON" - }, - { - "name": "off", - "type": "pure-token", - "display_text": "off", - "token": "OFF" - } - ] - } - ], - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ] - }, - "CLIENT NO-TOUCH": { - "summary": "Controls whether commands sent by the client affect the LRU/LFU of accessed keys.", - "since": "7.2.0", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": 3, - "arguments": [ - { - "name": "enabled", - "type": "oneof", - "arguments": [ - { - "name": "on", - "type": "pure-token", - "display_text": "on", - "token": "ON" - }, - { - "name": "off", - "type": "pure-token", - "display_text": "off", - "token": "OFF" - } - ] - } - ], - "command_flags": [ - "noscript", - "loading", - "stale" - ] - }, - "CLIENT PAUSE": { - "summary": "Suspends commands processing.", - "since": "3.0.0", - "group": "connection", - "complexity": "O(1)", - "history": [ - [ - "6.2.0", - "`CLIENT PAUSE WRITE` mode added along with the `mode` option." - ] - ], - "acl_categories": [ - "@admin", - "@slow", - "@dangerous", - "@connection" - ], - "arity": -3, - "arguments": [ - { - "name": "timeout", - "type": "integer", - "display_text": "timeout" - }, - { - "name": "mode", - "type": "oneof", - "since": "6.2.0", - "optional": true, - "arguments": [ - { - "name": "write", - "type": "pure-token", - "display_text": "write", - "token": "WRITE" - }, - { - "name": "all", - "type": "pure-token", - "display_text": "all", - "token": "ALL" - } - ] - } - ], - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ] - }, - "CLIENT REPLY": { - "summary": "Instructs the server whether to reply to commands.", - "since": "3.2.0", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": 3, - "arguments": [ - { - "name": "action", - "type": "oneof", - "arguments": [ - { - "name": "on", - "type": "pure-token", - "display_text": "on", - "token": "ON" - }, - { - "name": "off", - "type": "pure-token", - "display_text": "off", - "token": "OFF" - }, - { - "name": "skip", - "type": "pure-token", - "display_text": "skip", - "token": "SKIP" - } - ] - } - ], - "command_flags": [ - "noscript", - "loading", - "stale" - ] - }, - "CLIENT SETINFO": { - "summary": "Sets information specific to the client or connection.", - "since": "7.2.0", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": 4, - "arguments": [ - { - "name": "attr", - "type": "oneof", - "arguments": [ - { - "name": "libname", - "type": "string", - "display_text": "libname", - "token": "LIB-NAME" - }, - { - "name": "libver", - "type": "string", - "display_text": "libver", - "token": "LIB-VER" - } - ] - } - ], - "command_flags": [ - "noscript", - "loading", - "stale" - ], - "hints": [ - "request_policy:all_nodes", - "response_policy:all_succeeded" - ] - }, - "CLIENT SETNAME": { - "summary": "Sets the connection name.", - "since": "2.6.9", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": 3, - "arguments": [ - { - "name": "connection-name", - "type": "string", - "display_text": "connection-name" - } - ], - "command_flags": [ - "noscript", - "loading", - "stale" - ], - "hints": [ - "request_policy:all_nodes", - "response_policy:all_succeeded" - ] - }, - "CLIENT TRACKING": { - "summary": "Controls server-assisted client-side caching for the connection.", - "since": "6.0.0", - "group": "connection", - "complexity": "O(1). Some options may introduce additional complexity.", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": -3, - "arguments": [ - { - "name": "status", - "type": "oneof", - "arguments": [ - { - "name": "on", - "type": "pure-token", - "display_text": "on", - "token": "ON" - }, - { - "name": "off", - "type": "pure-token", - "display_text": "off", - "token": "OFF" - } - ] - }, - { - "name": "client-id", - "type": "integer", - "display_text": "client-id", - "token": "REDIRECT", - "optional": true - }, - { - "name": "prefix", - "type": "string", - "display_text": "prefix", - "token": "PREFIX", - "optional": true, - "multiple": true, - "multiple_token": true - }, - { - "name": "bcast", - "type": "pure-token", - "display_text": "bcast", - "token": "BCAST", - "optional": true - }, - { - "name": "optin", - "type": "pure-token", - "display_text": "optin", - "token": "OPTIN", - "optional": true - }, - { - "name": "optout", - "type": "pure-token", - "display_text": "optout", - "token": "OPTOUT", - "optional": true - }, - { - "name": "noloop", - "type": "pure-token", - "display_text": "noloop", - "token": "NOLOOP", - "optional": true - } - ], - "command_flags": [ - "noscript", - "loading", - "stale" - ] - }, - "CLIENT TRACKINGINFO": { - "summary": "Returns information about server-assisted client-side caching for the connection.", - "since": "6.2.0", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": 2, - "command_flags": [ - "noscript", - "loading", - "stale" - ] - }, - "CLIENT UNBLOCK": { - "summary": "Unblocks a client blocked by a blocking command from a different connection.", - "since": "5.0.0", - "group": "connection", - "complexity": "O(log N) where N is the number of client connections", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous", - "@connection" - ], - "arity": -3, - "arguments": [ - { - "name": "client-id", - "type": "integer", - "display_text": "client-id" - }, - { - "name": "unblock-type", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "timeout", - "type": "pure-token", - "display_text": "timeout", - "token": "TIMEOUT" - }, - { - "name": "error", - "type": "pure-token", - "display_text": "error", - "token": "ERROR" - } - ] - } - ], - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ] - }, - "CLIENT UNPAUSE": { - "summary": "Resumes processing commands from paused clients.", - "since": "6.2.0", - "group": "connection", - "complexity": "O(N) Where N is the number of paused clients", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous", - "@connection" - ], - "arity": 2, - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ] - }, - "CLUSTER": { - "summary": "A container for Redis Cluster commands.", - "since": "3.0.0", - "group": "cluster", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" - ], - "arity": -2 - }, - "CLUSTER ADDSLOTS": { - "summary": "Assigns new hash slots to a node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(N) where N is the total number of hash slot arguments", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -3, - "arguments": [ - { - "name": "slot", - "type": "integer", - "display_text": "slot", - "multiple": true - } - ], - "command_flags": [ - "admin", - "stale", - "no_async_loading" - ] - }, - "CLUSTER ADDSLOTSRANGE": { - "summary": "Assigns new hash slot ranges to a node.", - "since": "7.0.0", - "group": "cluster", - "complexity": "O(N) where N is the total number of the slots between the start slot and end slot arguments.", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -4, - "arguments": [ - { - "name": "range", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "start-slot", - "type": "integer", - "display_text": "start-slot" - }, - { - "name": "end-slot", - "type": "integer", - "display_text": "end-slot" - } - ] - } - ], - "command_flags": [ - "admin", - "stale", - "no_async_loading" - ] - }, - "CLUSTER BUMPEPOCH": { - "summary": "Advances the cluster config epoch.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "stale", - "no_async_loading" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "CLUSTER COUNT-FAILURE-REPORTS": { - "summary": "Returns the number of active failure reports active for a node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(N) where N is the number of failure reports", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 3, - "arguments": [ - { - "name": "node-id", - "type": "string", - "display_text": "node-id" - } - ], - "command_flags": [ - "admin", - "loading", - "stale" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "CLUSTER COUNTKEYSINSLOT": { - "summary": "Returns the number of keys in a hash slot.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", - "acl_categories": [ - "@slow" - ], - "arity": 3, - "arguments": [ - { - "name": "slot", - "type": "integer", - "display_text": "slot" - } - ], - "command_flags": [ - "stale" - ] - }, - "CLUSTER DELSLOTS": { - "summary": "Sets hash slots as unbound for a node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(N) where N is the total number of hash slot arguments", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -3, - "arguments": [ - { - "name": "slot", - "type": "integer", - "display_text": "slot", - "multiple": true - } - ], - "command_flags": [ - "admin", - "stale", - "no_async_loading" - ] - }, - "CLUSTER DELSLOTSRANGE": { - "summary": "Sets hash slot ranges as unbound for a node.", - "since": "7.0.0", - "group": "cluster", - "complexity": "O(N) where N is the total number of the slots between the start slot and end slot arguments.", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -4, - "arguments": [ - { - "name": "range", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "start-slot", - "type": "integer", - "display_text": "start-slot" - }, - { - "name": "end-slot", - "type": "integer", - "display_text": "end-slot" - } - ] - } - ], - "command_flags": [ - "admin", - "stale", - "no_async_loading" - ] - }, - "CLUSTER FAILOVER": { - "summary": "Forces a replica to perform a manual failover of its master.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -2, - "arguments": [ - { - "name": "options", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "force", - "type": "pure-token", - "display_text": "force", - "token": "FORCE" - }, - { - "name": "takeover", - "type": "pure-token", - "display_text": "takeover", - "token": "TAKEOVER" - } - ] - } - ], - "command_flags": [ - "admin", - "stale", - "no_async_loading" - ] - }, - "CLUSTER FLUSHSLOTS": { - "summary": "Deletes all slots information from a node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "stale", - "no_async_loading" - ] - }, - "CLUSTER FORGET": { - "summary": "Removes a node from the nodes table.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 3, - "arguments": [ - { - "name": "node-id", - "type": "string", - "display_text": "node-id" - } - ], - "command_flags": [ - "admin", - "stale", - "no_async_loading" - ] - }, - "CLUSTER GETKEYSINSLOT": { - "summary": "Returns the key names in a hash slot.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(N) where N is the number of requested keys", - "acl_categories": [ - "@slow" - ], - "arity": 4, - "arguments": [ - { - "name": "slot", - "type": "integer", - "display_text": "slot" - }, - { - "name": "count", - "type": "integer", - "display_text": "count" - } - ], - "command_flags": [ - "stale" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "CLUSTER HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "5.0.0", - "group": "cluster", - "complexity": "O(1)", - "acl_categories": [ - "@slow" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "CLUSTER INFO": { - "summary": "Returns information about the state of a node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", - "acl_categories": [ - "@slow" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "CLUSTER KEYSLOT": { - "summary": "Returns the hash slot for a key.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(N) where N is the number of bytes in the key", - "acl_categories": [ - "@slow" - ], - "arity": 3, - "arguments": [ - { - "name": "key", - "type": "string", - "display_text": "key" - } - ], - "command_flags": [ - "loading", - "stale" - ] - }, - "CLUSTER LINKS": { - "summary": "Returns a list of all TCP links to and from peer nodes.", - "since": "7.0.0", - "group": "cluster", - "complexity": "O(N) where N is the total number of Cluster nodes", - "acl_categories": [ - "@slow" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "CLUSTER MEET": { - "summary": "Forces a node to handshake with another node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", - "history": [ - [ - "4.0.0", - "Added the optional `cluster_bus_port` argument." - ] - ], - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -4, - "arguments": [ - { - "name": "ip", - "type": "string", - "display_text": "ip" - }, - { - "name": "port", - "type": "integer", - "display_text": "port" - }, - { - "name": "cluster-bus-port", - "type": "integer", - "display_text": "cluster-bus-port", - "since": "4.0.0", - "optional": true - } - ], - "command_flags": [ - "admin", - "stale", - "no_async_loading" - ] - }, - "CLUSTER MIGRATION": { - "summary": "Start, monitor and cancel slot migration.", - "since": "8.4.0", - "group": "cluster", - "complexity": "O(N) where N is the total number of the slots between the start slot and end slot arguments.", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -4, - "arguments": [ - { - "name": "subcommand", - "type": "oneof", - "arguments": [ - { - "name": "import", - "type": "block", - "token": "IMPORT", - "multiple": true, - "arguments": [ - { - "name": "start-slot", - "type": "integer", - "display_text": "start-slot" - }, - { - "name": "end-slot", - "type": "integer", - "display_text": "end-slot" - } - ] - }, - { - "name": "cancel", - "type": "oneof", - "token": "CANCEL", - "arguments": [ - { - "name": "task-id", - "type": "string", - "display_text": "task-id", - "token": "ID" - }, - { - "name": "all", - "type": "pure-token", - "display_text": "all", - "token": "ALL" - } - ] - }, - { - "name": "status", - "type": "oneof", - "token": "STATUS", - "arguments": [ - { - "name": "task-id", - "type": "string", - "display_text": "task-id", - "token": "ID", - "optional": true - }, - { - "name": "all", - "type": "pure-token", - "display_text": "all", - "token": "ALL", - "optional": true - } - ] - } - ] - } - ], - "command_flags": [ - "admin", - "stale", - "no_async_loading" - ] - }, - "CLUSTER MYID": { - "summary": "Returns the ID of a node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", - "acl_categories": [ - "@slow" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "CLUSTER MYSHARDID": { - "summary": "Returns the shard ID of a node.", - "since": "7.2.0", - "group": "cluster", - "complexity": "O(1)", - "acl_categories": [ - "@slow" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "CLUSTER NODES": { - "summary": "Returns the cluster configuration for a node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(N) where N is the total number of Cluster nodes", - "acl_categories": [ - "@slow" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "CLUSTER REPLICAS": { - "summary": "Lists the replica nodes of a master node.", - "since": "5.0.0", - "group": "cluster", - "complexity": "O(N) where N is the number of replicas.", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 3, - "arguments": [ - { - "name": "node-id", - "type": "string", - "display_text": "node-id" - } - ], - "command_flags": [ - "admin", - "loading", - "stale" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "CLUSTER REPLICATE": { - "summary": "Configure a node as replica of a master node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 3, - "arguments": [ - { - "name": "node-id", - "type": "string", - "display_text": "node-id" - } - ], - "command_flags": [ - "admin", - "stale", - "no_async_loading" - ] - }, - "CLUSTER RESET": { - "summary": "Resets a node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(N) where N is the number of known nodes. The command may execute a FLUSHALL as a side effect.", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -2, - "arguments": [ - { - "name": "reset-type", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "hard", - "type": "pure-token", - "display_text": "hard", - "token": "HARD" - }, - { - "name": "soft", - "type": "pure-token", - "display_text": "soft", - "token": "SOFT" - } - ] - } - ], - "command_flags": [ - "admin", - "noscript", - "stale" - ] - }, - "CLUSTER SAVECONFIG": { - "summary": "Forces a node to save the cluster configuration to disk.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "stale", - "no_async_loading" - ] - }, - "CLUSTER SET-CONFIG-EPOCH": { - "summary": "Sets the configuration epoch for a new node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 3, - "arguments": [ - { - "name": "config-epoch", - "type": "integer", - "display_text": "config-epoch" - } - ], - "command_flags": [ - "admin", - "stale", - "no_async_loading" - ] - }, - "CLUSTER SETSLOT": { - "summary": "Binds a hash slot to a node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -4, - "arguments": [ - { - "name": "slot", - "type": "integer", - "display_text": "slot" - }, - { - "name": "subcommand", - "type": "oneof", - "arguments": [ - { - "name": "importing", - "type": "string", - "display_text": "node-id", - "token": "IMPORTING" - }, - { - "name": "migrating", - "type": "string", - "display_text": "node-id", - "token": "MIGRATING" - }, - { - "name": "node", - "type": "string", - "display_text": "node-id", - "token": "NODE" - }, - { - "name": "stable", - "type": "pure-token", - "display_text": "stable", - "token": "STABLE" - } - ] - } - ], - "command_flags": [ - "admin", - "stale", - "no_async_loading" - ] - }, - "CLUSTER SHARDS": { - "summary": "Returns the mapping of cluster slots to shards.", - "since": "7.0.0", - "group": "cluster", - "complexity": "O(N) where N is the total number of cluster nodes", - "acl_categories": [ - "@slow" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "CLUSTER SLAVES": { - "summary": "Lists the replica nodes of a master node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(N) where N is the number of replicas.", - "deprecated_since": "5.0.0", - "replaced_by": "`CLUSTER REPLICAS`", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 3, - "arguments": [ - { - "name": "node-id", - "type": "string", - "display_text": "node-id" - } - ], - "command_flags": [ - "admin", - "loading", - "stale" - ], - "doc_flags": [ - "deprecated" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "CLUSTER SLOT-STATS": { - "summary": "Return an array of slot usage statistics for slots assigned to the current node.", - "since": "8.2.0", - "group": "cluster", - "complexity": "O(N) where N is the total number of slots based on arguments. O(N*log(N)) with ORDERBY subcommand.", - "acl_categories": [ - "@slow" - ], - "arity": -4, - "arguments": [ - { - "name": "filter", - "type": "oneof", - "arguments": [ - { - "name": "slotsrange", - "type": "block", - "token": "SLOTSRANGE", - "arguments": [ - { - "name": "start-slot", - "type": "integer", - "display_text": "start-slot" - }, - { - "name": "end-slot", - "type": "integer", - "display_text": "end-slot" - } - ] - }, - { - "name": "orderby", - "type": "block", - "token": "ORDERBY", - "arguments": [ - { - "name": "metric", - "type": "string", - "display_text": "metric" - }, - { - "name": "limit", - "type": "integer", - "display_text": "limit", - "token": "LIMIT", - "optional": true - }, - { - "name": "order", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "asc", - "type": "pure-token", - "display_text": "asc", - "token": "ASC" - }, - { - "name": "desc", - "type": "pure-token", - "display_text": "desc", - "token": "DESC" - } - ] - } - ] - } - ] - } - ], - "command_flags": [ - "loading", - "stale" - ], - "hints": [ - "nondeterministic_output", - "request_policy:all_shards" - ] - }, - "CLUSTER SLOTS": { - "summary": "Returns the mapping of cluster slots to nodes.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(N) where N is the total number of Cluster nodes", - "deprecated_since": "7.0.0", - "replaced_by": "`CLUSTER SHARDS`", - "history": [ - [ - "4.0.0", - "Added node IDs." - ], - [ - "7.0.0", - "Added additional networking metadata field." - ] - ], - "acl_categories": [ - "@slow" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ], - "doc_flags": [ - "deprecated" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "CLUSTER SYNCSLOTS": { - "summary": "Internal command for atomic slot migration protocol between cluster nodes.", - "since": "8.4.0", - "group": "cluster", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -3, - "arguments": [ - { - "name": "subcommand", - "type": "oneof", - "arguments": [ - { - "name": "sync", - "type": "block", - "token": "SYNC", - "arguments": [ - { - "name": "task-id", - "type": "string", - "display_text": "task-id" - }, - { - "name": "slot-range", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "start-slot", - "type": "integer", - "display_text": "start-slot" - }, - { - "name": "end-slot", - "type": "integer", - "display_text": "end-slot" - } - ] - } - ] - }, - { - "name": "task-id", - "type": "string", - "display_text": "task-id", - "token": "RDBCHANNEL" - }, - { - "name": "snapshot-eof", - "type": "pure-token", - "display_text": "snapshot-eof", - "token": "SNAPSHOT-EOF" - }, - { - "name": "stream-eof", - "type": "pure-token", - "display_text": "stream-eof", - "token": "STREAM-EOF" - }, - { - "name": "ack", - "type": "block", - "token": "ACK", - "arguments": [ - { - "name": "state", - "type": "string", - "display_text": "state" - }, - { - "name": "offset", - "type": "integer", - "display_text": "offset" - } - ] - }, - { - "name": "error", - "type": "string", - "display_text": "error", - "token": "FAIL" - }, - { - "name": "conf", - "type": "block", - "token": "CONF", - "arguments": [ - { - "name": "option", - "type": "string", - "display_text": "option", - "multiple": true - }, - { - "name": "value", - "type": "string", - "display_text": "value", - "multiple": true - } - ] - } - ] - } - ], - "command_flags": [ - "admin", - "stale", - "no_async_loading" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "COMMAND": { - "summary": "Returns detailed information about all commands.", - "since": "2.8.13", - "group": "server", - "complexity": "O(N) where N is the total number of Redis commands", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": -1, - "command_flags": [ - "loading", - "stale" - ], - "hints": [ - "nondeterministic_output_order" - ] - }, - "COMMAND COUNT": { - "summary": "Returns a count of commands.", - "since": "2.8.13", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "COMMAND DOCS": { - "summary": "Returns documentary information about one, multiple or all commands.", - "since": "7.0.0", - "group": "server", - "complexity": "O(N) where N is the number of commands to look up", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": -2, - "arguments": [ - { - "name": "command-name", - "type": "string", - "display_text": "command-name", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "loading", - "stale" - ], - "hints": [ - "nondeterministic_output_order" - ] - }, - "COMMAND GETKEYS": { - "summary": "Extracts the key names from an arbitrary command.", - "since": "2.8.13", - "group": "server", - "complexity": "O(N) where N is the number of arguments to the command", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": -3, - "arguments": [ - { - "name": "command", - "type": "string", - "display_text": "command" - }, - { - "name": "arg", - "type": "string", - "display_text": "arg", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "loading", - "stale" - ] - }, - "COMMAND GETKEYSANDFLAGS": { - "summary": "Extracts the key names and access flags for an arbitrary command.", - "since": "7.0.0", - "group": "server", - "complexity": "O(N) where N is the number of arguments to the command", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": -3, - "arguments": [ - { - "name": "command", - "type": "string", - "display_text": "command" - }, - { - "name": "arg", - "type": "string", - "display_text": "arg", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "loading", - "stale" - ] - }, - "COMMAND HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "5.0.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "COMMAND INFO": { - "summary": "Returns information about one, multiple or all commands.", - "since": "2.8.13", - "group": "server", - "complexity": "O(N) where N is the number of commands to look up", - "history": [ - [ - "7.0.0", - "Allowed to be called with no argument to get info on all commands." - ] - ], - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": -2, - "arguments": [ - { - "name": "command-name", - "type": "string", - "display_text": "command-name", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "loading", - "stale" - ], - "hints": [ - "nondeterministic_output_order" - ] - }, - "COMMAND LIST": { - "summary": "Returns a list of command names.", - "since": "7.0.0", - "group": "server", - "complexity": "O(N) where N is the total number of Redis commands", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": -2, - "arguments": [ - { - "name": "filterby", - "type": "oneof", - "token": "FILTERBY", - "optional": true, - "arguments": [ - { - "name": "module-name", - "type": "string", - "display_text": "module-name", - "token": "MODULE" - }, - { - "name": "category", - "type": "string", - "display_text": "category", - "token": "ACLCAT" - }, - { - "name": "pattern", - "type": "pattern", - "display_text": "pattern", - "token": "PATTERN" - } - ] - } - ], - "command_flags": [ - "loading", - "stale" - ], - "hints": [ - "nondeterministic_output_order" - ] - }, - "CONFIG": { - "summary": "A container for server configuration commands.", - "since": "2.0.0", - "group": "server", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" - ], - "arity": -2 - }, - "CONFIG GET": { - "summary": "Returns the effective values of configuration parameters.", - "since": "2.0.0", - "group": "server", - "complexity": "O(N) when N is the number of configuration parameters provided", - "history": [ - [ - "7.0.0", - "Added the ability to pass multiple pattern parameters in one call" - ] - ], - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -3, - "arguments": [ - { - "name": "parameter", - "type": "string", - "display_text": "parameter", - "multiple": true - } - ], - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ] - }, - "CONFIG HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "5.0.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@slow" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "CONFIG RESETSTAT": { - "summary": "Resets the server's statistics.", - "since": "2.0.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ], - "hints": [ - "request_policy:all_nodes", - "response_policy:all_succeeded" - ] - }, - "CONFIG REWRITE": { - "summary": "Persists the effective configuration to file.", - "since": "2.8.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ], - "hints": [ - "request_policy:all_nodes", - "response_policy:all_succeeded" - ] - }, - "CONFIG SET": { - "summary": "Sets configuration parameters in-flight.", - "since": "2.0.0", - "group": "server", - "complexity": "O(N) when N is the number of configuration parameters provided", - "history": [ - [ - "7.0.0", - "Added the ability to set multiple parameters in one call." - ] - ], - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -4, - "arguments": [ - { - "name": "data", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "parameter", - "type": "string", - "display_text": "parameter" - }, - { - "name": "value", - "type": "string", - "display_text": "value" - } - ] - } - ], - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ], - "hints": [ - "request_policy:all_nodes", - "response_policy:all_succeeded" - ] - }, - "COPY": { - "summary": "Copies the value of a key to a new key.", - "since": "6.2.0", - "group": "generic", - "complexity": "O(N) worst case for collections, where N is the number of nested items. O(1) for string values.", - "acl_categories": [ - "@keyspace", - "@write", - "@slow" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, - "update": true - } - ], - "arguments": [ - { - "name": "source", - "type": "key", - "display_text": "source", - "key_spec_index": 0 - }, - { - "name": "destination", - "type": "key", - "display_text": "destination", - "key_spec_index": 1 - }, - { - "name": "destination-db", - "type": "integer", - "display_text": "destination-db", - "token": "DB", - "optional": true - }, - { - "name": "replace", - "type": "pure-token", - "display_text": "replace", - "token": "REPLACE", - "optional": true - } - ], - "command_flags": [ - "write", - "denyoom" - ] - }, - "DBSIZE": { - "summary": "Returns the number of keys in the database.", - "since": "1.0.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@keyspace", - "@read", - "@fast" - ], - "arity": 1, - "command_flags": [ - "readonly", - "fast" - ], - "hints": [ - "request_policy:all_shards", - "response_policy:agg_sum" - ] - }, - "DEBUG": { - "summary": "A container for debugging commands.", - "since": "1.0.0", - "group": "server", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -2, - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ], - "doc_flags": [ - "syscmd" - ] - }, - "DECR": { - "summary": "Decrements the integer value of a key by one. Uses 0 as initial value if the key doesn't exist.", - "since": "1.0.0", - "group": "string", - "complexity": "O(1)", - "acl_categories": [ - "@write", - "@string", - "@fast" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "DECRBY": { - "summary": "Decrements a number from the integer value of a key. Uses 0 as initial value if the key doesn't exist.", - "since": "1.0.0", - "group": "string", - "complexity": "O(1)", - "acl_categories": [ - "@write", - "@string", - "@fast" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "decrement", - "type": "integer", - "display_text": "decrement" - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "DEL": { - "summary": "Deletes one or more keys.", - "since": "1.0.0", - "group": "generic", - "complexity": "O(N) where N is the number of keys that will be removed. When a key to remove holds a value other than a string, the individual complexity for this key is O(M) where M is the number of elements in the list, set, sorted set or hash. Removing a single key that holds a string value is O(1).", - "acl_categories": [ - "@keyspace", - "@write", - "@slow" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 0 - } - }, - "RM": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - } - ], - "command_flags": [ - "write" - ], - "hints": [ - "request_policy:multi_shard", - "response_policy:agg_sum" - ] - }, - "DELEX": { - "summary": "Conditionally removes the specified key based on value or digest comparison.", - "since": "8.4.0", - "group": "string", - "complexity": "O(1) for IFEQ/IFNE, O(N) for IFDEQ/IFDNE where N is the length of the string value.", - "acl_categories": [ - "@write", - "@string", - "@fast" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "delete": true, - "variable_flags": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "condition", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "ifeq-value", - "type": "string", - "display_text": "ifeq-value", - "token": "IFEQ" - }, - { - "name": "ifne-value", - "type": "string", - "display_text": "ifne-value", - "token": "IFNE" - }, - { - "name": "ifdeq-digest", - "type": "integer", - "display_text": "ifdeq-digest", - "token": "IFDEQ" - }, - { - "name": "ifdne-digest", - "type": "integer", - "display_text": "ifdne-digest", - "token": "IFDNE" - } - ] - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "DIGEST": { - "summary": "Returns the XXH3 hash of a string value.", - "since": "8.4.0", - "group": "string", - "complexity": "O(N) where N is the length of the string value.", - "acl_categories": [ - "@read", - "@string", - "@fast" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "DISCARD": { - "summary": "Discards a transaction.", - "since": "2.0.0", - "group": "transactions", - "complexity": "O(N), when N is the number of queued commands", - "acl_categories": [ - "@fast", - "@transaction" - ], - "arity": 1, - "command_flags": [ - "noscript", - "loading", - "stale", - "fast", - "allow_busy" - ] - }, - "DUMP": { - "summary": "Returns a serialized representation of the value stored at a key.", - "since": "2.6.0", - "group": "generic", - "complexity": "O(1) to access the key and additional O(N*M) to serialize it, where N is the number of Redis objects composing the value and M their average size. For small string values the time complexity is thus O(1)+O(1*M) where M is small, so simply O(1).", - "acl_categories": [ - "@keyspace", - "@read", - "@slow" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "ECHO": { - "summary": "Returns the given string.", - "since": "1.0.0", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@fast", - "@connection" - ], - "arity": 2, - "arguments": [ - { - "name": "message", - "type": "string", - "display_text": "message" - } - ], - "command_flags": [ - "loading", - "stale", - "fast" - ] - }, - "EVAL": { - "summary": "Executes a server-side Lua script.", - "since": "2.6.0", - "group": "scripting", - "complexity": "Depends on the script that is executed.", - "acl_categories": [ - "@slow", - "@scripting" - ], - "arity": -3, - "key_specs": [ - { - "notes": "We cannot tell how the keys will be used so we assume the worst, RW and UPDATE", - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "script", - "type": "string", - "display_text": "script" - }, - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "optional": true, - "multiple": true - }, - { - "name": "arg", - "type": "string", - "display_text": "arg", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "noscript", - "stale", - "skip_monitor", - "no_mandatory_keys", - "movablekeys" - ] - }, - "EVALSHA": { - "summary": "Executes a server-side Lua script by SHA1 digest.", - "since": "2.6.0", - "group": "scripting", - "complexity": "Depends on the script that is executed.", - "acl_categories": [ - "@slow", - "@scripting" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "sha1", - "type": "string", - "display_text": "sha1" - }, - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "optional": true, - "multiple": true - }, - { - "name": "arg", - "type": "string", - "display_text": "arg", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "noscript", - "stale", - "skip_monitor", - "no_mandatory_keys", - "movablekeys" - ] - }, - "EVALSHA_RO": { - "summary": "Executes a read-only server-side Lua script by SHA1 digest.", - "since": "7.0.0", - "group": "scripting", - "complexity": "Depends on the script that is executed.", - "acl_categories": [ - "@slow", - "@scripting" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "sha1", - "type": "string", - "display_text": "sha1" - }, - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "optional": true, - "multiple": true - }, - { - "name": "arg", - "type": "string", - "display_text": "arg", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "readonly", - "noscript", - "stale", - "skip_monitor", - "no_mandatory_keys", - "movablekeys" - ] - }, - "EVAL_RO": { - "summary": "Executes a read-only server-side Lua script.", - "since": "7.0.0", - "group": "scripting", - "complexity": "Depends on the script that is executed.", - "acl_categories": [ - "@slow", - "@scripting" - ], - "arity": -3, - "key_specs": [ - { - "notes": "We cannot tell how the keys will be used so we assume the worst, RO and ACCESS", - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "script", - "type": "string", - "display_text": "script" - }, - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "optional": true, - "multiple": true - }, - { - "name": "arg", - "type": "string", - "display_text": "arg", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "readonly", - "noscript", - "stale", - "skip_monitor", - "no_mandatory_keys", - "movablekeys" - ] - }, - "EXEC": { - "summary": "Executes all commands in a transaction.", - "since": "1.2.0", - "group": "transactions", - "complexity": "Depends on commands in the transaction", - "acl_categories": [ - "@slow", - "@transaction" - ], - "arity": 1, - "command_flags": [ - "noscript", - "loading", - "stale", - "skip_slowlog" - ] - }, - "EXISTS": { - "summary": "Determines whether one or more keys exist.", - "since": "1.0.0", - "group": "generic", - "complexity": "O(N) where N is the number of keys to check.", - "history": [ - [ - "3.0.3", - "Accepts multiple `key` arguments." - ] - ], - "acl_categories": [ - "@keyspace", - "@read", - "@fast" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 0 - } - }, - "RO": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - } - ], - "command_flags": [ - "readonly", - "fast" - ], - "hints": [ - "request_policy:multi_shard", - "response_policy:agg_sum" - ] - }, - "EXPIRE": { - "summary": "Sets the expiration time of a key in seconds.", - "since": "1.0.0", - "group": "generic", - "complexity": "O(1)", - "history": [ - [ - "7.0.0", - "Added options: `NX`, `XX`, `GT` and `LT`." - ] - ], - "acl_categories": [ - "@keyspace", - "@write", - "@fast" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "seconds", - "type": "integer", - "display_text": "seconds" - }, - { - "name": "condition", - "type": "oneof", - "since": "7.0.0", - "optional": true, - "arguments": [ - { - "name": "nx", - "type": "pure-token", - "display_text": "nx", - "token": "NX" - }, - { - "name": "xx", - "type": "pure-token", - "display_text": "xx", - "token": "XX" - }, - { - "name": "gt", - "type": "pure-token", - "display_text": "gt", - "token": "GT" - }, - { - "name": "lt", - "type": "pure-token", - "display_text": "lt", - "token": "LT" - } - ] - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "EXPIREAT": { - "summary": "Sets the expiration time of a key to a Unix timestamp.", - "since": "1.2.0", - "group": "generic", - "complexity": "O(1)", - "history": [ - [ - "7.0.0", - "Added options: `NX`, `XX`, `GT` and `LT`." - ] - ], - "acl_categories": [ - "@keyspace", - "@write", - "@fast" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "unix-time-seconds", - "type": "unix-time", - "display_text": "unix-time-seconds" - }, - { - "name": "condition", - "type": "oneof", - "since": "7.0.0", - "optional": true, - "arguments": [ - { - "name": "nx", - "type": "pure-token", - "display_text": "nx", - "token": "NX" - }, - { - "name": "xx", - "type": "pure-token", - "display_text": "xx", - "token": "XX" - }, - { - "name": "gt", - "type": "pure-token", - "display_text": "gt", - "token": "GT" - }, - { - "name": "lt", - "type": "pure-token", - "display_text": "lt", - "token": "LT" - } - ] - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "EXPIRETIME": { - "summary": "Returns the expiration time of a key as a Unix timestamp.", - "since": "7.0.0", - "group": "generic", - "complexity": "O(1)", - "acl_categories": [ - "@keyspace", - "@read", - "@fast" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "FAILOVER": { - "summary": "Starts a coordinated failover from a server to one of its replicas.", - "since": "6.2.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -1, - "arguments": [ - { - "name": "target", - "type": "block", - "token": "TO", - "optional": true, - "arguments": [ - { - "name": "host", - "type": "string", - "display_text": "host" - }, - { - "name": "port", - "type": "integer", - "display_text": "port" - }, - { - "name": "force", - "type": "pure-token", - "display_text": "force", - "token": "FORCE", - "optional": true - } - ] - }, - { - "name": "abort", - "type": "pure-token", - "display_text": "abort", - "token": "ABORT", - "optional": true - }, - { - "name": "milliseconds", - "type": "integer", - "display_text": "milliseconds", - "token": "TIMEOUT", - "optional": true - } - ], - "command_flags": [ - "admin", - "noscript", - "stale" - ] - }, - "FCALL": { - "summary": "Invokes a function.", - "since": "7.0.0", - "group": "scripting", - "complexity": "Depends on the function that is executed.", - "acl_categories": [ - "@slow", - "@scripting" - ], - "arity": -3, - "key_specs": [ - { - "notes": "We cannot tell how the keys will be used so we assume the worst, RW and UPDATE", - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "function", - "type": "string", - "display_text": "function" - }, - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "optional": true, - "multiple": true - }, - { - "name": "arg", - "type": "string", - "display_text": "arg", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "noscript", - "stale", - "skip_monitor", - "no_mandatory_keys", - "movablekeys" - ] - }, - "FCALL_RO": { - "summary": "Invokes a read-only function.", - "since": "7.0.0", - "group": "scripting", - "complexity": "Depends on the function that is executed.", - "acl_categories": [ - "@slow", - "@scripting" - ], - "arity": -3, - "key_specs": [ - { - "notes": "We cannot tell how the keys will be used so we assume the worst, RO and ACCESS", - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "function", - "type": "string", - "display_text": "function" - }, - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "optional": true, - "multiple": true - }, - { - "name": "arg", - "type": "string", - "display_text": "arg", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "readonly", - "noscript", - "stale", - "skip_monitor", - "no_mandatory_keys", - "movablekeys" - ] - }, - "FLUSHALL": { - "summary": "Removes all keys from all databases.", - "since": "1.0.0", - "group": "server", - "complexity": "O(N) where N is the total number of keys in all databases", - "history": [ - [ - "4.0.0", - "Added the `ASYNC` flushing mode modifier." - ], - [ - "6.2.0", - "Added the `SYNC` flushing mode modifier." - ] - ], - "acl_categories": [ - "@keyspace", - "@write", - "@slow", - "@dangerous" - ], - "arity": -1, - "arguments": [ - { - "name": "flush-type", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "async", - "type": "pure-token", - "display_text": "async", - "token": "ASYNC", - "since": "4.0.0" - }, - { - "name": "sync", - "type": "pure-token", - "display_text": "sync", - "token": "SYNC", - "since": "6.2.0" - } - ] - } - ], - "command_flags": [ - "write" - ], - "hints": [ - "request_policy:all_shards", - "response_policy:all_succeeded" - ] - }, - "FLUSHDB": { - "summary": "Remove all keys from the current database.", - "since": "1.0.0", - "group": "server", - "complexity": "O(N) where N is the number of keys in the selected database", - "history": [ - [ - "4.0.0", - "Added the `ASYNC` flushing mode modifier." - ], - [ - "6.2.0", - "Added the `SYNC` flushing mode modifier." - ] - ], - "acl_categories": [ - "@keyspace", - "@write", - "@slow", - "@dangerous" - ], - "arity": -1, - "arguments": [ - { - "name": "flush-type", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "async", - "type": "pure-token", - "display_text": "async", - "token": "ASYNC", - "since": "4.0.0" - }, - { - "name": "sync", - "type": "pure-token", - "display_text": "sync", - "token": "SYNC", - "since": "6.2.0" - } - ] - } - ], - "command_flags": [ - "write" - ], - "hints": [ - "request_policy:all_shards", - "response_policy:all_succeeded" - ] - }, - "FUNCTION": { - "summary": "A container for function commands.", - "since": "7.0.0", - "group": "scripting", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" - ], - "arity": -2 - }, - "FUNCTION DELETE": { - "summary": "Deletes a library and its functions.", - "since": "7.0.0", - "group": "scripting", - "complexity": "O(1)", - "acl_categories": [ - "@write", - "@slow", - "@scripting" - ], - "arity": 3, - "arguments": [ - { - "name": "library-name", - "type": "string", - "display_text": "library-name" - } - ], - "command_flags": [ - "write", - "noscript" - ], - "hints": [ - "request_policy:all_shards", - "response_policy:all_succeeded" - ] - }, - "FUNCTION DUMP": { - "summary": "Dumps all libraries into a serialized binary payload.", - "since": "7.0.0", - "group": "scripting", - "complexity": "O(N) where N is the number of functions", - "acl_categories": [ - "@slow", - "@scripting" - ], - "arity": 2, - "command_flags": [ - "noscript" - ] - }, - "FUNCTION FLUSH": { - "summary": "Deletes all libraries and functions.", - "since": "7.0.0", - "group": "scripting", - "complexity": "O(N) where N is the number of functions deleted", - "acl_categories": [ - "@write", - "@slow", - "@scripting" - ], - "arity": -2, - "arguments": [ - { - "name": "flush-type", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "async", - "type": "pure-token", - "display_text": "async", - "token": "ASYNC" - }, - { - "name": "sync", - "type": "pure-token", - "display_text": "sync", - "token": "SYNC" - } - ] - } - ], - "command_flags": [ - "write", - "noscript" - ], - "hints": [ - "request_policy:all_shards", - "response_policy:all_succeeded" - ] - }, - "FUNCTION HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "7.0.0", - "group": "scripting", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@scripting" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "FUNCTION KILL": { - "summary": "Terminates a function during execution.", - "since": "7.0.0", - "group": "scripting", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@scripting" - ], - "arity": 2, - "command_flags": [ - "noscript", - "allow_busy" - ], - "hints": [ - "request_policy:all_shards", - "response_policy:one_succeeded" - ] - }, - "FUNCTION LIST": { - "summary": "Returns information about all libraries.", - "since": "7.0.0", - "group": "scripting", - "complexity": "O(N) where N is the number of functions", - "acl_categories": [ - "@slow", - "@scripting" - ], - "arity": -2, - "arguments": [ - { - "name": "library-name-pattern", - "type": "string", - "display_text": "library-name-pattern", - "token": "LIBRARYNAME", - "optional": true - }, - { - "name": "withcode", - "type": "pure-token", - "display_text": "withcode", - "token": "WITHCODE", - "optional": true - } - ], - "command_flags": [ - "noscript" - ], - "hints": [ - "nondeterministic_output_order" - ] - }, - "FUNCTION LOAD": { - "summary": "Creates a library.", - "since": "7.0.0", - "group": "scripting", - "complexity": "O(1) (considering compilation time is redundant)", - "acl_categories": [ - "@write", - "@slow", - "@scripting" - ], - "arity": -3, - "arguments": [ - { - "name": "replace", - "type": "pure-token", - "display_text": "replace", - "token": "REPLACE", - "optional": true - }, - { - "name": "function-code", - "type": "string", - "display_text": "function-code" - } - ], - "command_flags": [ - "write", - "denyoom", - "noscript" - ], - "hints": [ - "request_policy:all_shards", - "response_policy:all_succeeded" - ] - }, - "FUNCTION RESTORE": { - "summary": "Restores all libraries from a payload.", - "since": "7.0.0", - "group": "scripting", - "complexity": "O(N) where N is the number of functions on the payload", - "acl_categories": [ - "@write", - "@slow", - "@scripting" - ], - "arity": -3, - "arguments": [ - { - "name": "serialized-value", - "type": "string", - "display_text": "serialized-value" - }, - { - "name": "policy", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "flush", - "type": "pure-token", - "display_text": "flush", - "token": "FLUSH" - }, - { - "name": "append", - "type": "pure-token", - "display_text": "append", - "token": "APPEND" - }, - { - "name": "replace", - "type": "pure-token", - "display_text": "replace", - "token": "REPLACE" - } - ] - } - ], - "command_flags": [ - "write", - "denyoom", - "noscript" - ], - "hints": [ - "request_policy:all_shards", - "response_policy:all_succeeded" - ] - }, - "FUNCTION STATS": { - "summary": "Returns information about a function during execution.", - "since": "7.0.0", - "group": "scripting", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@scripting" - ], - "arity": 2, - "command_flags": [ - "noscript", - "allow_busy" - ], - "hints": [ - "nondeterministic_output", - "request_policy:all_shards", - "response_policy:special" - ] - }, - "GEOADD": { - "summary": "Adds one or more members to a geospatial index. The key is created if it doesn't exist.", - "since": "3.2.0", - "group": "geo", - "complexity": "O(log(N)) for each item added, where N is the number of elements in the sorted set.", - "history": [ - [ - "6.2.0", - "Added the `CH`, `NX` and `XX` options." - ] - ], - "acl_categories": [ - "@write", - "@geo", - "@slow" - ], - "arity": -5, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "condition", - "type": "oneof", - "since": "6.2.0", - "optional": true, - "arguments": [ - { - "name": "nx", - "type": "pure-token", - "display_text": "nx", - "token": "NX" - }, - { - "name": "xx", - "type": "pure-token", - "display_text": "xx", - "token": "XX" - } - ] - }, - { - "name": "change", - "type": "pure-token", - "display_text": "change", - "token": "CH", - "since": "6.2.0", - "optional": true - }, - { - "name": "data", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "longitude", - "type": "double", - "display_text": "longitude" - }, - { - "name": "latitude", - "type": "double", - "display_text": "latitude" - }, - { - "name": "member", - "type": "string", - "display_text": "member" - } - ] - } - ], - "command_flags": [ - "write", - "denyoom" - ] - }, - "GEODIST": { - "summary": "Returns the distance between two members of a geospatial index.", - "since": "3.2.0", - "group": "geo", - "complexity": "O(1)", - "acl_categories": [ - "@read", - "@geo", - "@slow" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "member1", - "type": "string", - "display_text": "member1" - }, - { - "name": "member2", - "type": "string", - "display_text": "member2" - }, - { - "name": "unit", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "m", - "type": "pure-token", - "display_text": "m", - "token": "M" - }, - { - "name": "km", - "type": "pure-token", - "display_text": "km", - "token": "KM" - }, - { - "name": "ft", - "type": "pure-token", - "display_text": "ft", - "token": "FT" - }, - { - "name": "mi", - "type": "pure-token", - "display_text": "mi", - "token": "MI" - } - ] - } - ], - "command_flags": [ - "readonly" - ] - }, - "GEOHASH": { - "summary": "Returns members from a geospatial index as geohash strings.", - "since": "3.2.0", - "group": "geo", - "complexity": "O(1) for each member requested.", - "acl_categories": [ - "@read", - "@geo", - "@slow" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "member", - "type": "string", - "display_text": "member", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "readonly" - ] - }, - "GEOPOS": { - "summary": "Returns the longitude and latitude of members from a geospatial index.", - "since": "3.2.0", - "group": "geo", - "complexity": "O(1) for each member requested.", - "acl_categories": [ - "@read", - "@geo", - "@slow" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "member", - "type": "string", - "display_text": "member", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "readonly" - ] - }, - "GEORADIUS": { - "summary": "Queries a geospatial index for members within a distance from a coordinate, optionally stores the result.", - "since": "3.2.0", - "group": "geo", - "complexity": "O(N+log(M)) where N is the number of elements inside the bounding box of the circular area delimited by center and radius and M is the number of items inside the index.", - "deprecated_since": "6.2.0", - "replaced_by": "`GEOSEARCH` and `GEOSEARCHSTORE` with the `BYRADIUS` argument", - "history": [ - [ - "6.2.0", - "Added the `ANY` option for `COUNT`." - ], - [ - "7.0.0", - "Added support for uppercase unit names." - ] - ], - "acl_categories": [ - "@write", - "@geo", - "@slow" - ], - "arity": -6, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - }, - { - "begin_search": { - "type": "keyword", - "spec": { - "keyword": "STORE", - "startfrom": 6 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, - "update": true - }, - { - "begin_search": { - "type": "keyword", - "spec": { - "keyword": "STOREDIST", - "startfrom": 6 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "longitude", - "type": "double", - "display_text": "longitude" - }, - { - "name": "latitude", - "type": "double", - "display_text": "latitude" - }, - { - "name": "radius", - "type": "double", - "display_text": "radius" - }, - { - "name": "unit", - "type": "oneof", - "arguments": [ - { - "name": "m", - "type": "pure-token", - "display_text": "m", - "token": "M" - }, - { - "name": "km", - "type": "pure-token", - "display_text": "km", - "token": "KM" - }, - { - "name": "ft", - "type": "pure-token", - "display_text": "ft", - "token": "FT" - }, - { - "name": "mi", - "type": "pure-token", - "display_text": "mi", - "token": "MI" - } - ] - }, - { - "name": "withcoord", - "type": "pure-token", - "display_text": "withcoord", - "token": "WITHCOORD", - "optional": true - }, - { - "name": "withdist", - "type": "pure-token", - "display_text": "withdist", - "token": "WITHDIST", - "optional": true - }, - { - "name": "withhash", - "type": "pure-token", - "display_text": "withhash", - "token": "WITHHASH", - "optional": true - }, - { - "name": "count-block", - "type": "block", - "optional": true, - "arguments": [ - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT" - }, - { - "name": "any", - "type": "pure-token", - "display_text": "any", - "token": "ANY", - "since": "6.2.0", - "optional": true - } - ] - }, - { - "name": "order", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "asc", - "type": "pure-token", - "display_text": "asc", - "token": "ASC" - }, - { - "name": "desc", - "type": "pure-token", - "display_text": "desc", - "token": "DESC" - } - ] - }, - { - "name": "store", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "storekey", - "type": "key", - "display_text": "key", - "key_spec_index": 1, - "token": "STORE" - }, - { - "name": "storedistkey", - "type": "key", - "display_text": "key", - "key_spec_index": 2, - "token": "STOREDIST" - } - ] - } - ], - "command_flags": [ - "write", - "denyoom", - "movablekeys" - ], - "doc_flags": [ - "deprecated" - ] - }, - "GEORADIUSBYMEMBER": { - "summary": "Queries a geospatial index for members within a distance from a member, optionally stores the result.", - "since": "3.2.0", - "group": "geo", - "complexity": "O(N+log(M)) where N is the number of elements inside the bounding box of the circular area delimited by center and radius and M is the number of items inside the index.", - "deprecated_since": "6.2.0", - "replaced_by": "`GEOSEARCH` and `GEOSEARCHSTORE` with the `BYRADIUS` and `FROMMEMBER` arguments", - "history": [ - [ - "6.2.0", - "Added the `ANY` option for `COUNT`." - ], - [ - "7.0.0", - "Added support for uppercase unit names." - ] - ], - "acl_categories": [ - "@write", - "@geo", - "@slow" - ], - "arity": -5, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - }, - { - "begin_search": { - "type": "keyword", - "spec": { - "keyword": "STORE", - "startfrom": 5 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, - "update": true - }, - { - "begin_search": { - "type": "keyword", - "spec": { - "keyword": "STOREDIST", - "startfrom": 5 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "member", - "type": "string", - "display_text": "member" - }, - { - "name": "radius", - "type": "double", - "display_text": "radius" - }, - { - "name": "unit", - "type": "oneof", - "arguments": [ - { - "name": "m", - "type": "pure-token", - "display_text": "m", - "token": "M" - }, - { - "name": "km", - "type": "pure-token", - "display_text": "km", - "token": "KM" - }, - { - "name": "ft", - "type": "pure-token", - "display_text": "ft", - "token": "FT" - }, - { - "name": "mi", - "type": "pure-token", - "display_text": "mi", - "token": "MI" - } - ] - }, - { - "name": "withcoord", - "type": "pure-token", - "display_text": "withcoord", - "token": "WITHCOORD", - "optional": true - }, - { - "name": "withdist", - "type": "pure-token", - "display_text": "withdist", - "token": "WITHDIST", - "optional": true - }, - { - "name": "withhash", - "type": "pure-token", - "display_text": "withhash", - "token": "WITHHASH", - "optional": true - }, - { - "name": "count-block", - "type": "block", - "optional": true, - "arguments": [ - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT" - }, - { - "name": "any", - "type": "pure-token", - "display_text": "any", - "token": "ANY", - "optional": true - } - ] - }, - { - "name": "order", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "asc", - "type": "pure-token", - "display_text": "asc", - "token": "ASC" - }, - { - "name": "desc", - "type": "pure-token", - "display_text": "desc", - "token": "DESC" - } - ] - }, - { - "name": "store", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "storekey", - "type": "key", - "display_text": "key", - "key_spec_index": 1, - "token": "STORE" - }, - { - "name": "storedistkey", - "type": "key", - "display_text": "key", - "key_spec_index": 2, - "token": "STOREDIST" - } - ] - } - ], - "command_flags": [ - "write", - "denyoom", - "movablekeys" - ], - "doc_flags": [ - "deprecated" - ] - }, - "GEORADIUSBYMEMBER_RO": { - "summary": "Returns members from a geospatial index that are within a distance from a member.", - "since": "3.2.10", - "group": "geo", - "complexity": "O(N+log(M)) where N is the number of elements inside the bounding box of the circular area delimited by center and radius and M is the number of items inside the index.", - "deprecated_since": "6.2.0", - "replaced_by": "`GEOSEARCH` with the `BYRADIUS` and `FROMMEMBER` arguments", - "history": [ - [ - "6.2.0", - "Added the `ANY` option for `COUNT`." - ], - [ - "7.0.0", - "Added support for uppercase unit names." - ] - ], - "acl_categories": [ - "@read", - "@geo", - "@slow" - ], - "arity": -5, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "member", - "type": "string", - "display_text": "member" - }, - { - "name": "radius", - "type": "double", - "display_text": "radius" - }, - { - "name": "unit", - "type": "oneof", - "arguments": [ - { - "name": "m", - "type": "pure-token", - "display_text": "m", - "token": "M" - }, - { - "name": "km", - "type": "pure-token", - "display_text": "km", - "token": "KM" - }, - { - "name": "ft", - "type": "pure-token", - "display_text": "ft", - "token": "FT" - }, - { - "name": "mi", - "type": "pure-token", - "display_text": "mi", - "token": "MI" - } - ] - }, - { - "name": "withcoord", - "type": "pure-token", - "display_text": "withcoord", - "token": "WITHCOORD", - "optional": true - }, - { - "name": "withdist", - "type": "pure-token", - "display_text": "withdist", - "token": "WITHDIST", - "optional": true - }, - { - "name": "withhash", - "type": "pure-token", - "display_text": "withhash", - "token": "WITHHASH", - "optional": true - }, - { - "name": "count-block", - "type": "block", - "optional": true, - "arguments": [ - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT" - }, - { - "name": "any", - "type": "pure-token", - "display_text": "any", - "token": "ANY", - "optional": true - } - ] - }, - { - "name": "order", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "asc", - "type": "pure-token", - "display_text": "asc", - "token": "ASC" - }, - { - "name": "desc", - "type": "pure-token", - "display_text": "desc", - "token": "DESC" - } - ] - } - ], - "command_flags": [ - "readonly" - ], - "doc_flags": [ - "deprecated" - ] - }, - "GEORADIUS_RO": { - "summary": "Returns members from a geospatial index that are within a distance from a coordinate.", - "since": "3.2.10", - "group": "geo", - "complexity": "O(N+log(M)) where N is the number of elements inside the bounding box of the circular area delimited by center and radius and M is the number of items inside the index.", - "deprecated_since": "6.2.0", - "replaced_by": "`GEOSEARCH` with the `BYRADIUS` argument", - "history": [ - [ - "6.2.0", - "Added the `ANY` option for `COUNT`." - ], - [ - "7.0.0", - "Added support for uppercase unit names." - ] - ], - "acl_categories": [ - "@read", - "@geo", - "@slow" - ], - "arity": -6, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "longitude", - "type": "double", - "display_text": "longitude" - }, - { - "name": "latitude", - "type": "double", - "display_text": "latitude" - }, - { - "name": "radius", - "type": "double", - "display_text": "radius" - }, - { - "name": "unit", - "type": "oneof", - "arguments": [ - { - "name": "m", - "type": "pure-token", - "display_text": "m", - "token": "M" - }, - { - "name": "km", - "type": "pure-token", - "display_text": "km", - "token": "KM" - }, - { - "name": "ft", - "type": "pure-token", - "display_text": "ft", - "token": "FT" - }, - { - "name": "mi", - "type": "pure-token", - "display_text": "mi", - "token": "MI" - } - ] - }, - { - "name": "withcoord", - "type": "pure-token", - "display_text": "withcoord", - "token": "WITHCOORD", - "optional": true - }, - { - "name": "withdist", - "type": "pure-token", - "display_text": "withdist", - "token": "WITHDIST", - "optional": true - }, - { - "name": "withhash", - "type": "pure-token", - "display_text": "withhash", - "token": "WITHHASH", - "optional": true - }, - { - "name": "count-block", - "type": "block", - "optional": true, - "arguments": [ - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT" - }, - { - "name": "any", - "type": "pure-token", - "display_text": "any", - "token": "ANY", - "since": "6.2.0", - "optional": true - } - ] - }, - { - "name": "order", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "asc", - "type": "pure-token", - "display_text": "asc", - "token": "ASC" - }, - { - "name": "desc", - "type": "pure-token", - "display_text": "desc", - "token": "DESC" - } - ] - } - ], - "command_flags": [ - "readonly" - ], - "doc_flags": [ - "deprecated" - ] - }, - "GEOSEARCH": { - "summary": "Queries a geospatial index for members inside an area of a box or a circle.", - "since": "6.2.0", - "group": "geo", - "complexity": "O(N+log(M)) where N is the number of elements in the grid-aligned bounding box area around the shape provided as the filter and M is the number of items inside the shape", - "history": [ - [ - "7.0.0", - "Added support for uppercase unit names." - ] - ], - "acl_categories": [ - "@read", - "@geo", - "@slow" - ], - "arity": -7, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "from", - "type": "oneof", - "arguments": [ - { - "name": "member", - "type": "string", - "display_text": "member", - "token": "FROMMEMBER" - }, - { - "name": "fromlonlat", - "type": "block", - "token": "FROMLONLAT", - "arguments": [ - { - "name": "longitude", - "type": "double", - "display_text": "longitude" - }, - { - "name": "latitude", - "type": "double", - "display_text": "latitude" - } - ] - } - ] - }, - { - "name": "by", - "type": "oneof", - "arguments": [ - { - "name": "circle", - "type": "block", - "arguments": [ - { - "name": "radius", - "type": "double", - "display_text": "radius", - "token": "BYRADIUS" - }, - { - "name": "unit", - "type": "oneof", - "arguments": [ - { - "name": "m", - "type": "pure-token", - "display_text": "m", - "token": "M" - }, - { - "name": "km", - "type": "pure-token", - "display_text": "km", - "token": "KM" - }, - { - "name": "ft", - "type": "pure-token", - "display_text": "ft", - "token": "FT" - }, - { - "name": "mi", - "type": "pure-token", - "display_text": "mi", - "token": "MI" - } - ] - } - ] - }, - { - "name": "box", - "type": "block", - "arguments": [ - { - "name": "width", - "type": "double", - "display_text": "width", - "token": "BYBOX" - }, - { - "name": "height", - "type": "double", - "display_text": "height" - }, - { - "name": "unit", - "type": "oneof", - "arguments": [ - { - "name": "m", - "type": "pure-token", - "display_text": "m", - "token": "M" - }, - { - "name": "km", - "type": "pure-token", - "display_text": "km", - "token": "KM" - }, - { - "name": "ft", - "type": "pure-token", - "display_text": "ft", - "token": "FT" - }, - { - "name": "mi", - "type": "pure-token", - "display_text": "mi", - "token": "MI" - } - ] - } - ] - } - ] - }, - { - "name": "order", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "asc", - "type": "pure-token", - "display_text": "asc", - "token": "ASC" - }, - { - "name": "desc", - "type": "pure-token", - "display_text": "desc", - "token": "DESC" - } - ] - }, - { - "name": "count-block", - "type": "block", - "optional": true, - "arguments": [ - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT" - }, - { - "name": "any", - "type": "pure-token", - "display_text": "any", - "token": "ANY", - "optional": true - } - ] - }, - { - "name": "withcoord", - "type": "pure-token", - "display_text": "withcoord", - "token": "WITHCOORD", - "optional": true - }, - { - "name": "withdist", - "type": "pure-token", - "display_text": "withdist", - "token": "WITHDIST", - "optional": true - }, - { - "name": "withhash", - "type": "pure-token", - "display_text": "withhash", - "token": "WITHHASH", - "optional": true - } - ], - "command_flags": [ - "readonly" - ] - }, - "GEOSEARCHSTORE": { - "summary": "Queries a geospatial index for members inside an area of a box or a circle, optionally stores the result.", - "since": "6.2.0", - "group": "geo", - "complexity": "O(N+log(M)) where N is the number of elements in the grid-aligned bounding box area around the shape provided as the filter and M is the number of items inside the shape", - "history": [ - [ - "7.0.0", - "Added support for uppercase unit names." - ] - ], - "acl_categories": [ - "@write", - "@geo", - "@slow" - ], - "arity": -8, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, - "update": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "destination", - "type": "key", - "display_text": "destination", - "key_spec_index": 0 - }, - { - "name": "source", - "type": "key", - "display_text": "source", - "key_spec_index": 1 - }, - { - "name": "from", - "type": "oneof", - "arguments": [ - { - "name": "member", - "type": "string", - "display_text": "member", - "token": "FROMMEMBER" - }, - { - "name": "fromlonlat", - "type": "block", - "token": "FROMLONLAT", - "arguments": [ - { - "name": "longitude", - "type": "double", - "display_text": "longitude" - }, - { - "name": "latitude", - "type": "double", - "display_text": "latitude" - } - ] - } - ] - }, - { - "name": "by", - "type": "oneof", - "arguments": [ - { - "name": "circle", - "type": "block", - "arguments": [ - { - "name": "radius", - "type": "double", - "display_text": "radius", - "token": "BYRADIUS" - }, - { - "name": "unit", - "type": "oneof", - "arguments": [ - { - "name": "m", - "type": "pure-token", - "display_text": "m", - "token": "M" - }, - { - "name": "km", - "type": "pure-token", - "display_text": "km", - "token": "KM" - }, - { - "name": "ft", - "type": "pure-token", - "display_text": "ft", - "token": "FT" - }, - { - "name": "mi", - "type": "pure-token", - "display_text": "mi", - "token": "MI" - } - ] - } - ] - }, - { - "name": "box", - "type": "block", - "arguments": [ - { - "name": "width", - "type": "double", - "display_text": "width", - "token": "BYBOX" - }, - { - "name": "height", - "type": "double", - "display_text": "height" - }, - { - "name": "unit", - "type": "oneof", - "arguments": [ - { - "name": "m", - "type": "pure-token", - "display_text": "m", - "token": "M" - }, - { - "name": "km", - "type": "pure-token", - "display_text": "km", - "token": "KM" - }, - { - "name": "ft", - "type": "pure-token", - "display_text": "ft", - "token": "FT" - }, - { - "name": "mi", - "type": "pure-token", - "display_text": "mi", - "token": "MI" - } - ] - } - ] - } - ] - }, - { - "name": "order", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "asc", - "type": "pure-token", - "display_text": "asc", - "token": "ASC" - }, - { - "name": "desc", - "type": "pure-token", - "display_text": "desc", - "token": "DESC" - } - ] - }, - { - "name": "count-block", - "type": "block", - "optional": true, - "arguments": [ - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT" - }, - { - "name": "any", - "type": "pure-token", - "display_text": "any", - "token": "ANY", - "optional": true - } - ] - }, - { - "name": "storedist", - "type": "pure-token", - "display_text": "storedist", - "token": "STOREDIST", - "optional": true - } - ], - "command_flags": [ - "write", - "denyoom" - ] - }, - "GET": { - "summary": "Returns the string value of a key.", - "since": "1.0.0", - "group": "string", - "complexity": "O(1)", - "acl_categories": [ - "@read", - "@string", - "@fast" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "GETBIT": { - "summary": "Returns a bit value by offset.", - "since": "2.2.0", - "group": "bitmap", - "complexity": "O(1)", - "acl_categories": [ - "@read", - "@bitmap", - "@fast" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "offset", - "type": "integer", - "display_text": "offset" - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "GETDEL": { - "summary": "Returns the string value of a key after deleting the key.", - "since": "6.2.0", - "group": "string", - "complexity": "O(1)", - "acl_categories": [ - "@write", - "@string", - "@fast" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "GETEX": { - "summary": "Returns the string value of a key after setting its expiration time.", - "since": "6.2.0", - "group": "string", - "complexity": "O(1)", - "acl_categories": [ - "@write", - "@string", - "@fast" - ], - "arity": -2, - "key_specs": [ - { - "notes": "RW and UPDATE because it changes the TTL", - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "expiration", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "seconds", - "type": "integer", - "display_text": "seconds", - "token": "EX" - }, - { - "name": "milliseconds", - "type": "integer", - "display_text": "milliseconds", - "token": "PX" - }, - { - "name": "unix-time-seconds", - "type": "unix-time", - "display_text": "unix-time-seconds", - "token": "EXAT" - }, - { - "name": "unix-time-milliseconds", - "type": "unix-time", - "display_text": "unix-time-milliseconds", - "token": "PXAT" - }, - { - "name": "persist", - "type": "pure-token", - "display_text": "persist", - "token": "PERSIST" - } - ] - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "GETRANGE": { - "summary": "Returns a substring of the string stored at a key.", - "since": "2.4.0", - "group": "string", - "complexity": "O(N) where N is the length of the returned string. The complexity is ultimately determined by the returned length, but because creating a substring from an existing string is very cheap, it can be considered O(1) for small strings.", - "acl_categories": [ - "@read", - "@string", - "@slow" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "start", - "type": "integer", - "display_text": "start" - }, - { - "name": "end", - "type": "integer", - "display_text": "end" - } - ], - "command_flags": [ - "readonly" - ] - }, - "GETSET": { - "summary": "Returns the previous string value of a key after setting it to a new value.", - "since": "1.0.0", - "group": "string", - "complexity": "O(1)", - "deprecated_since": "6.2.0", - "replaced_by": "`SET` with the `!GET` argument", - "acl_categories": [ - "@write", - "@string", - "@fast" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "value", - "type": "string", - "display_text": "value" - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ], - "doc_flags": [ - "deprecated" - ] - }, - "HDEL": { - "summary": "Deletes one or more fields and their values from a hash. Deletes the hash if no fields remain.", - "since": "2.0.0", - "group": "hash", - "complexity": "O(N) where N is the number of fields to be removed.", - "history": [ - [ - "2.4.0", - "Accepts multiple `field` arguments." - ] - ], - "acl_categories": [ - "@write", - "@hash", - "@fast" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "field", - "type": "string", - "display_text": "field", - "multiple": true - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "HELLO": { - "summary": "Handshakes with the Redis server.", - "since": "6.0.0", - "group": "connection", - "complexity": "O(1)", - "history": [ - [ - "6.2.0", - "`protover` made optional; when called without arguments the command reports the current connection's context." - ] - ], - "acl_categories": [ - "@fast", - "@connection" - ], - "arity": -1, - "arguments": [ - { - "name": "arguments", - "type": "block", - "optional": true, - "arguments": [ - { - "name": "protover", - "type": "integer", - "display_text": "protover" - }, - { - "name": "auth", - "type": "block", - "token": "AUTH", - "optional": true, - "arguments": [ - { - "name": "username", - "type": "string", - "display_text": "username" - }, - { - "name": "password", - "type": "string", - "display_text": "password" - } - ] - }, - { - "name": "clientname", - "type": "string", - "display_text": "clientname", - "token": "SETNAME", - "optional": true - } - ] - } - ], - "command_flags": [ - "noscript", - "loading", - "stale", - "fast", - "no_auth", - "allow_busy" - ] - }, - "HEXISTS": { - "summary": "Determines whether a field exists in a hash.", - "since": "2.0.0", - "group": "hash", - "complexity": "O(1)", - "acl_categories": [ - "@read", - "@hash", - "@fast" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "field", - "type": "string", - "display_text": "field" - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "HEXPIRE": { - "summary": "Set expiry for hash field using relative time to expire (seconds)", - "since": "7.4.0", - "group": "hash", - "complexity": "O(N) where N is the number of specified fields", - "acl_categories": [ - "@write", - "@hash", - "@fast" - ], - "arity": -6, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "seconds", - "type": "integer", - "display_text": "seconds" - }, - { - "name": "condition", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "nx", - "type": "pure-token", - "display_text": "nx", - "token": "NX" - }, - { - "name": "xx", - "type": "pure-token", - "display_text": "xx", - "token": "XX" - }, - { - "name": "gt", - "type": "pure-token", - "display_text": "gt", - "token": "GT" - }, - { - "name": "lt", - "type": "pure-token", - "display_text": "lt", - "token": "LT" - } - ] - }, - { - "name": "fields", - "type": "block", - "token": "FIELDS", - "arguments": [ - { - "name": "numfields", - "type": "integer", - "display_text": "numfields" - }, - { - "name": "field", - "type": "string", - "display_text": "field", - "multiple": true - } - ] - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "HEXPIREAT": { - "summary": "Set expiry for hash field using an absolute Unix timestamp (seconds)", - "since": "7.4.0", - "group": "hash", - "complexity": "O(N) where N is the number of specified fields", - "acl_categories": [ - "@write", - "@hash", - "@fast" - ], - "arity": -6, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "unix-time-seconds", - "type": "unix-time", - "display_text": "unix-time-seconds" - }, - { - "name": "condition", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "nx", - "type": "pure-token", - "display_text": "nx", - "token": "NX" - }, - { - "name": "xx", - "type": "pure-token", - "display_text": "xx", - "token": "XX" - }, - { - "name": "gt", - "type": "pure-token", - "display_text": "gt", - "token": "GT" - }, - { - "name": "lt", - "type": "pure-token", - "display_text": "lt", - "token": "LT" - } - ] - }, - { - "name": "fields", - "type": "block", - "token": "FIELDS", - "arguments": [ - { - "name": "numfields", - "type": "integer", - "display_text": "numfields" - }, - { - "name": "field", - "type": "string", - "display_text": "field", - "multiple": true - } - ] - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "HEXPIRETIME": { - "summary": "Returns the expiration time of a hash field as a Unix timestamp, in seconds.", - "since": "7.4.0", - "group": "hash", - "complexity": "O(N) where N is the number of specified fields", - "acl_categories": [ - "@read", - "@hash", - "@fast" - ], - "arity": -5, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "fields", - "type": "block", - "token": "FIELDS", - "arguments": [ - { - "name": "numfields", - "type": "integer", - "display_text": "numfields" - }, - { - "name": "field", - "type": "string", - "display_text": "field", - "multiple": true - } - ] - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "HGET": { - "summary": "Returns the value of a field in a hash.", - "since": "2.0.0", - "group": "hash", - "complexity": "O(1)", - "acl_categories": [ - "@read", - "@hash", - "@fast" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "field", - "type": "string", - "display_text": "field" - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "HGETALL": { - "summary": "Returns all fields and values in a hash.", - "since": "2.0.0", - "group": "hash", - "complexity": "O(N) where N is the size of the hash.", - "acl_categories": [ - "@read", - "@hash", - "@slow" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output_order" - ] - }, - "HGETDEL": { - "summary": "Returns the value of a field and deletes it from the hash.", - "since": "8.0.0", - "group": "hash", - "complexity": "O(N) where N is the number of specified fields", - "acl_categories": [ - "@write", - "@hash", - "@fast" - ], - "arity": -5, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "fields", - "type": "block", - "token": "FIELDS", - "arguments": [ - { - "name": "numfields", - "type": "integer", - "display_text": "numfields" - }, - { - "name": "field", - "type": "string", - "display_text": "field", - "multiple": true - } - ] - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "HGETEX": { - "summary": "Get the value of one or more fields of a given hash key, and optionally set their expiration.", - "since": "8.0.0", - "group": "hash", - "complexity": "O(N) where N is the number of specified fields", - "acl_categories": [ - "@write", - "@hash", - "@fast" - ], - "arity": -5, - "key_specs": [ - { - "notes": "RW and UPDATE because it changes the TTL", - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "expiration", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "seconds", - "type": "integer", - "display_text": "seconds", - "token": "EX" - }, - { - "name": "milliseconds", - "type": "integer", - "display_text": "milliseconds", - "token": "PX" - }, - { - "name": "unix-time-seconds", - "type": "unix-time", - "display_text": "unix-time-seconds", - "token": "EXAT" - }, - { - "name": "unix-time-milliseconds", - "type": "unix-time", - "display_text": "unix-time-milliseconds", - "token": "PXAT" - }, - { - "name": "persist", - "type": "pure-token", - "display_text": "persist", - "token": "PERSIST" - } - ] - }, - { - "name": "fields", - "type": "block", - "token": "FIELDS", - "arguments": [ - { - "name": "numfields", - "type": "integer", - "display_text": "numfields" - }, - { - "name": "field", - "type": "string", - "display_text": "field", - "multiple": true - } - ] - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "HINCRBY": { - "summary": "Increments the integer value of a field in a hash by a number. Uses 0 as initial value if the field doesn't exist.", - "since": "2.0.0", - "group": "hash", - "complexity": "O(1)", - "acl_categories": [ - "@write", - "@hash", - "@fast" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "field", - "type": "string", - "display_text": "field" - }, - { - "name": "increment", - "type": "integer", - "display_text": "increment" - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "HINCRBYFLOAT": { - "summary": "Increments the floating point value of a field by a number. Uses 0 as initial value if the field doesn't exist.", - "since": "2.6.0", - "group": "hash", - "complexity": "O(1)", - "acl_categories": [ - "@write", - "@hash", - "@fast" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "field", - "type": "string", - "display_text": "field" - }, - { - "name": "increment", - "type": "double", - "display_text": "increment" - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "HKEYS": { - "summary": "Returns all fields in a hash.", - "since": "2.0.0", - "group": "hash", - "complexity": "O(N) where N is the size of the hash.", - "acl_categories": [ - "@read", - "@hash", - "@slow" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output_order" - ] - }, - "HLEN": { - "summary": "Returns the number of fields in a hash.", - "since": "2.0.0", - "group": "hash", - "complexity": "O(1)", - "acl_categories": [ - "@read", - "@hash", - "@fast" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "HMGET": { - "summary": "Returns the values of all fields in a hash.", - "since": "2.0.0", - "group": "hash", - "complexity": "O(N) where N is the number of fields being requested.", - "acl_categories": [ - "@read", - "@hash", - "@fast" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "field", - "type": "string", - "display_text": "field", - "multiple": true - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "HMSET": { - "summary": "Sets the values of multiple fields.", - "since": "2.0.0", - "group": "hash", - "complexity": "O(N) where N is the number of fields being set.", - "deprecated_since": "4.0.0", - "replaced_by": "`HSET` with multiple field-value pairs", - "acl_categories": [ - "@write", - "@hash", - "@fast" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "data", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "field", - "type": "string", - "display_text": "field" - }, - { - "name": "value", - "type": "string", - "display_text": "value" - } - ] - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ], - "doc_flags": [ - "deprecated" - ] - }, - "HOTKEYS": { - "summary": "A container for hotkeys tracking commands.", - "since": "8.6.0", - "group": "server", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" - ], - "arity": -2 - }, - "HOTKEYS GET": { - "summary": "Returns lists of top K hotkeys depending on metrics chosen in HOTKEYS START command.", - "since": "8.6.0", - "group": "server", - "complexity": "O(K) where K is the number of hotkeys returned.", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "noscript" - ], - "hints": [ - "nondeterministic_output", - "request_policy:special", - "response_policy:special" - ] - }, - "HOTKEYS HELP": { - "summary": "Return helpful text about HOTKEYS command parameters.", - "since": "8.6.1", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@slow" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "HOTKEYS RESET": { - "summary": "Release the resources used for hotkey tracking.", - "since": "8.6.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "noscript" - ], - "hints": [ - "request_policy:special" - ] - }, - "HOTKEYS START": { - "summary": "Starts hotkeys tracking.", - "since": "8.6.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -2, - "arguments": [ - { - "name": "metrics", - "type": "block", - "token": "METRICS", - "arguments": [ - { - "name": "count", - "type": "integer", - "display_text": "count" - }, - { - "name": "cpu", - "type": "pure-token", - "display_text": "cpu", - "token": "CPU", - "optional": true - }, - { - "name": "net", - "type": "pure-token", - "display_text": "net", - "token": "NET", - "optional": true - } - ] - }, - { - "name": "k", - "type": "integer", - "display_text": "k", - "token": "COUNT", - "optional": true - }, - { - "name": "seconds", - "type": "integer", - "display_text": "seconds", - "token": "DURATION", - "optional": true - }, - { - "name": "ratio", - "type": "integer", - "display_text": "ratio", - "token": "SAMPLE", - "optional": true - }, - { - "name": "slots", - "type": "block", - "token": "SLOTS", - "optional": true, - "arguments": [ - { - "name": "count", - "type": "integer", - "display_text": "count" - }, - { - "name": "slot", - "type": "integer", - "display_text": "slot", - "multiple": true - } - ] - } - ], - "command_flags": [ - "admin", - "noscript" - ], - "hints": [ - "request_policy:special" - ] - }, - "HOTKEYS STOP": { - "summary": "Stops hotkeys tracking.", - "since": "8.6.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "noscript" - ], - "hints": [ - "request_policy:special" - ] - }, - "HPERSIST": { - "summary": "Removes the expiration time for each specified field", - "since": "7.4.0", - "group": "hash", - "complexity": "O(N) where N is the number of specified fields", - "acl_categories": [ - "@write", - "@hash", - "@fast" - ], - "arity": -5, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "fields", - "type": "block", - "token": "FIELDS", - "arguments": [ - { - "name": "numfields", - "type": "integer", - "display_text": "numfields" - }, - { - "name": "field", - "type": "string", - "display_text": "field", - "multiple": true - } - ] - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "HPEXPIRE": { - "summary": "Set expiry for hash field using relative time to expire (milliseconds)", - "since": "7.4.0", - "group": "hash", - "complexity": "O(N) where N is the number of specified fields", - "acl_categories": [ - "@write", - "@hash", - "@fast" - ], - "arity": -6, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "milliseconds", - "type": "integer", - "display_text": "milliseconds" - }, - { - "name": "condition", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "nx", - "type": "pure-token", - "display_text": "nx", - "token": "NX" - }, - { - "name": "xx", - "type": "pure-token", - "display_text": "xx", - "token": "XX" - }, - { - "name": "gt", - "type": "pure-token", - "display_text": "gt", - "token": "GT" - }, - { - "name": "lt", - "type": "pure-token", - "display_text": "lt", - "token": "LT" - } - ] - }, - { - "name": "fields", - "type": "block", - "token": "FIELDS", - "arguments": [ - { - "name": "numfields", - "type": "integer", - "display_text": "numfields" - }, - { - "name": "field", - "type": "string", - "display_text": "field", - "multiple": true - } - ] - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "HPEXPIREAT": { - "summary": "Set expiry for hash field using an absolute Unix timestamp (milliseconds)", - "since": "7.4.0", - "group": "hash", - "complexity": "O(N) where N is the number of specified fields", - "acl_categories": [ - "@write", - "@hash", - "@fast" - ], - "arity": -6, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "unix-time-milliseconds", - "type": "unix-time", - "display_text": "unix-time-milliseconds" - }, - { - "name": "condition", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "nx", - "type": "pure-token", - "display_text": "nx", - "token": "NX" - }, - { - "name": "xx", - "type": "pure-token", - "display_text": "xx", - "token": "XX" - }, - { - "name": "gt", - "type": "pure-token", - "display_text": "gt", - "token": "GT" - }, - { - "name": "lt", - "type": "pure-token", - "display_text": "lt", - "token": "LT" - } - ] - }, - { - "name": "fields", - "type": "block", - "token": "FIELDS", - "arguments": [ - { - "name": "numfields", - "type": "integer", - "display_text": "numfields" - }, - { - "name": "field", - "type": "string", - "display_text": "field", - "multiple": true - } - ] - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "HPEXPIRETIME": { - "summary": "Returns the expiration time of a hash field as a Unix timestamp, in msec.", - "since": "7.4.0", - "group": "hash", - "complexity": "O(N) where N is the number of specified fields", - "acl_categories": [ - "@read", - "@hash", - "@fast" - ], - "arity": -5, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "fields", - "type": "block", - "token": "FIELDS", - "arguments": [ - { - "name": "numfields", - "type": "integer", - "display_text": "numfields" - }, - { - "name": "field", - "type": "string", - "display_text": "field", - "multiple": true - } - ] - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "HPTTL": { - "summary": "Returns the TTL in milliseconds of a hash field.", - "since": "7.4.0", - "group": "hash", - "complexity": "O(N) where N is the number of specified fields", - "acl_categories": [ - "@read", - "@hash", - "@fast" - ], - "arity": -5, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "fields", - "type": "block", - "token": "FIELDS", - "arguments": [ - { - "name": "numfields", - "type": "integer", - "display_text": "numfields" - }, - { - "name": "field", - "type": "string", - "display_text": "field", - "multiple": true - } - ] - } - ], - "command_flags": [ - "readonly", - "fast" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "HRANDFIELD": { - "summary": "Returns one or more random fields from a hash.", - "since": "6.2.0", - "group": "hash", - "complexity": "O(N) where N is the number of fields returned", - "acl_categories": [ - "@read", - "@hash", - "@slow" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "options", - "type": "block", - "optional": true, - "arguments": [ - { - "name": "count", - "type": "integer", - "display_text": "count" - }, - { - "name": "withvalues", - "type": "pure-token", - "display_text": "withvalues", - "token": "WITHVALUES", - "optional": true - } - ] - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "HSCAN": { - "summary": "Iterates over fields and values of a hash.", - "since": "2.8.0", - "group": "hash", - "complexity": "O(1) for every call. O(N) for a complete iteration, including enough command calls for the cursor to return back to 0. N is the number of elements inside the collection.", - "acl_categories": [ - "@read", - "@hash", - "@slow" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "cursor", - "type": "integer", - "display_text": "cursor" - }, - { - "name": "pattern", - "type": "pattern", - "display_text": "pattern", - "token": "MATCH", - "optional": true - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true - }, - { - "name": "novalues", - "type": "pure-token", - "display_text": "novalues", - "token": "NOVALUES", - "optional": true - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "HSET": { - "summary": "Creates or modifies the value of a field in a hash.", - "since": "2.0.0", - "group": "hash", - "complexity": "O(1) for each field/value pair added, so O(N) to add N field/value pairs when the command is called with multiple field/value pairs.", - "history": [ - [ - "4.0.0", - "Accepts multiple `field` and `value` arguments." - ] - ], - "acl_categories": [ - "@write", - "@hash", - "@fast" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "data", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "field", - "type": "string", - "display_text": "field" - }, - { - "name": "value", - "type": "string", - "display_text": "value" - } - ] - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "HSETEX": { - "summary": "Set the value of one or more fields of a given hash key, and optionally set their expiration.", - "since": "8.0.0", - "group": "hash", - "complexity": "O(N) where N is the number of fields being set.", - "acl_categories": [ - "@write", - "@hash", - "@fast" - ], - "arity": -6, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "condition", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "fnx", - "type": "pure-token", - "display_text": "fnx", - "token": "FNX" - }, - { - "name": "fxx", - "type": "pure-token", - "display_text": "fxx", - "token": "FXX" - } - ] - }, - { - "name": "expiration", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "seconds", - "type": "integer", - "display_text": "seconds", - "token": "EX" - }, - { - "name": "milliseconds", - "type": "integer", - "display_text": "milliseconds", - "token": "PX" - }, - { - "name": "unix-time-seconds", - "type": "unix-time", - "display_text": "unix-time-seconds", - "token": "EXAT" - }, - { - "name": "unix-time-milliseconds", - "type": "unix-time", - "display_text": "unix-time-milliseconds", - "token": "PXAT" - }, - { - "name": "keepttl", - "type": "pure-token", - "display_text": "keepttl", - "token": "KEEPTTL" - } - ] - }, - { - "name": "fields", - "type": "block", - "token": "FIELDS", - "arguments": [ - { - "name": "numfields", - "type": "integer", - "display_text": "numfields" - }, - { - "name": "data", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "field", - "type": "string", - "display_text": "field" - }, - { - "name": "value", - "type": "string", - "display_text": "value" - } - ] - } - ] - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "HSETNX": { - "summary": "Sets the value of a field in a hash only when the field doesn't exist.", - "since": "2.0.0", - "group": "hash", - "complexity": "O(1)", - "acl_categories": [ - "@write", - "@hash", - "@fast" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "insert": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "field", - "type": "string", - "display_text": "field" - }, - { - "name": "value", - "type": "string", - "display_text": "value" - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "HSTRLEN": { - "summary": "Returns the length of the value of a field.", - "since": "3.2.0", - "group": "hash", - "complexity": "O(1)", - "acl_categories": [ - "@read", - "@hash", - "@fast" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "field", - "type": "string", - "display_text": "field" - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "HTTL": { - "summary": "Returns the TTL in seconds of a hash field.", - "since": "7.4.0", - "group": "hash", - "complexity": "O(N) where N is the number of specified fields", - "acl_categories": [ - "@read", - "@hash", - "@fast" - ], - "arity": -5, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "fields", - "type": "block", - "token": "FIELDS", - "arguments": [ - { - "name": "numfields", - "type": "integer", - "display_text": "numfields" - }, - { - "name": "field", - "type": "string", - "display_text": "field", - "multiple": true - } - ] - } - ], - "command_flags": [ - "readonly", - "fast" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "HVALS": { - "summary": "Returns all values in a hash.", - "since": "2.0.0", - "group": "hash", - "complexity": "O(N) where N is the size of the hash.", - "acl_categories": [ - "@read", - "@hash", - "@slow" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output_order" - ] - }, - "INCR": { - "summary": "Increments the integer value of a key by one. Uses 0 as initial value if the key doesn't exist.", - "since": "1.0.0", - "group": "string", - "complexity": "O(1)", - "acl_categories": [ - "@write", - "@string", - "@fast" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "INCRBY": { - "summary": "Increments the integer value of a key by a number. Uses 0 as initial value if the key doesn't exist.", - "since": "1.0.0", - "group": "string", - "complexity": "O(1)", - "acl_categories": [ - "@write", - "@string", - "@fast" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "increment", - "type": "integer", - "display_text": "increment" - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "INCRBYFLOAT": { - "summary": "Increment the floating point value of a key by a number. Uses 0 as initial value if the key doesn't exist.", - "since": "2.6.0", - "group": "string", - "complexity": "O(1)", - "acl_categories": [ - "@write", - "@string", - "@fast" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "increment", - "type": "double", - "display_text": "increment" - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "INCREX": { - "summary": "Increments the numeric value of a key by a number and sets its expiration time. Uses 0 as initial value if the key doesn't exist.", - "since": "8.8.0", - "group": "string", - "complexity": "O(1)", - "acl_categories": [ - "@write", - "@string", - "@fast" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "increment", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "float", - "type": "double", - "display_text": "float", - "token": "BYFLOAT" - }, - { - "name": "integer", - "type": "integer", - "display_text": "integer", - "token": "BYINT" - } - ] - }, - { - "name": "overflow-block", - "type": "oneof", - "token": "OVERFLOW", - "summary": "Out-of-bounds policy; defaults to FAIL. Missing LBOUND/UBOUND default to the type limits (LLONG_MIN/LLONG_MAX for BYINT, -LDBL_MAX/LDBL_MAX for BYFLOAT).", - "optional": true, - "arguments": [ - { - "name": "fail", - "type": "pure-token", - "display_text": "fail", - "token": "FAIL" - }, - { - "name": "sat", - "type": "pure-token", - "display_text": "sat", - "token": "SAT" - }, - { - "name": "reject", - "type": "pure-token", - "display_text": "reject", - "token": "REJECT" - } - ] - }, - { - "name": "lowerbound", - "type": "string", - "display_text": "lowerbound", - "token": "LBOUND", - "summary": "Integer when used with BYINT, floating-point when used with BYFLOAT.", - "optional": true - }, - { - "name": "upperbound", - "type": "string", - "display_text": "upperbound", - "token": "UBOUND", - "summary": "Integer when used with BYINT, floating-point when used with BYFLOAT.", - "optional": true - }, - { - "name": "expiration", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "seconds", - "type": "integer", - "display_text": "seconds", - "token": "EX" - }, - { - "name": "milliseconds", - "type": "integer", - "display_text": "milliseconds", - "token": "PX" - }, - { - "name": "unix-time-seconds", - "type": "unix-time", - "display_text": "unix-time-seconds", - "token": "EXAT" - }, - { - "name": "unix-time-milliseconds", - "type": "unix-time", - "display_text": "unix-time-milliseconds", - "token": "PXAT" - }, - { - "name": "persist", - "type": "pure-token", - "display_text": "persist", - "token": "PERSIST" - } - ] - }, - { - "name": "enx", - "type": "pure-token", - "display_text": "enx", - "token": "ENX", - "summary": "Only set the expiration if the key currently has no TTL. Requires one of EX/PX/EXAT/PXAT; cannot be combined with PERSIST.", - "optional": true - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "INFO": { - "summary": "Returns information and statistics about the server.", - "since": "1.0.0", - "group": "server", - "complexity": "O(1)", - "history": [ - [ - "7.0.0", - "Added support for taking multiple section arguments." - ] - ], - "acl_categories": [ - "@slow", - "@dangerous" - ], - "arity": -1, - "arguments": [ - { - "name": "section", - "type": "string", - "display_text": "section", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "loading", - "stale" - ], - "hints": [ - "nondeterministic_output", - "request_policy:all_shards", - "response_policy:special" - ] - }, - "KEYS": { - "summary": "Returns all key names that match a pattern.", - "since": "1.0.0", - "group": "generic", - "complexity": "O(N) with N being the number of keys in the database, under the assumption that the key names in the database and the given pattern have limited length.", - "acl_categories": [ - "@keyspace", - "@read", - "@slow", - "@dangerous" - ], - "arity": 2, - "arguments": [ - { - "name": "pattern", - "type": "pattern", - "display_text": "pattern" - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "request_policy:all_shards", - "nondeterministic_output_order" - ] - }, - "LASTSAVE": { - "summary": "Returns the Unix timestamp of the last successful save to disk.", - "since": "1.0.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@fast", - "@dangerous" - ], - "arity": 1, - "command_flags": [ - "loading", - "stale", - "fast" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "LATENCY": { - "summary": "A container for latency diagnostics commands.", - "since": "2.8.13", - "group": "server", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" - ], - "arity": -2 - }, - "LATENCY DOCTOR": { - "summary": "Returns a human-readable latency analysis report.", - "since": "2.8.13", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ], - "hints": [ - "nondeterministic_output", - "request_policy:all_nodes", - "response_policy:special" - ] - }, - "LATENCY GRAPH": { - "summary": "Returns a latency graph for an event.", - "since": "2.8.13", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 3, - "arguments": [ - { - "name": "event", - "type": "string", - "display_text": "event" - } - ], - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ], - "hints": [ - "nondeterministic_output", - "request_policy:all_nodes", - "response_policy:special" - ] - }, - "LATENCY HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "2.8.13", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@slow" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "LATENCY HISTOGRAM": { - "summary": "Returns the cumulative distribution of latencies of a subset or all commands.", - "since": "7.0.0", - "group": "server", - "complexity": "O(N) where N is the number of commands with latency information being retrieved.", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -2, - "arguments": [ - { - "name": "command", - "type": "string", - "display_text": "command", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ], - "hints": [ - "nondeterministic_output", - "request_policy:all_nodes", - "response_policy:special" - ] - }, - "LATENCY HISTORY": { - "summary": "Returns timestamp-latency samples for an event.", - "since": "2.8.13", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 3, - "arguments": [ - { - "name": "event", - "type": "string", - "display_text": "event" - } - ], - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ], - "hints": [ - "nondeterministic_output", - "request_policy:all_nodes", - "response_policy:special" - ] - }, - "LATENCY LATEST": { - "summary": "Returns the latest latency samples for all events.", - "since": "2.8.13", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ], - "hints": [ - "nondeterministic_output", - "request_policy:all_nodes", - "response_policy:special" - ] - }, - "LATENCY RESET": { - "summary": "Resets the latency data for one or more events.", - "since": "2.8.13", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -2, - "arguments": [ - { - "name": "event", - "type": "string", - "display_text": "event", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ], - "hints": [ - "request_policy:all_nodes", - "response_policy:agg_sum" - ] - }, - "LCS": { - "summary": "Finds the longest common substring.", - "since": "7.0.0", - "group": "string", - "complexity": "O(N*M) where N and M are the lengths of s1 and s2, respectively", - "acl_categories": [ - "@read", - "@string", - "@slow" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 1, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key1", - "type": "key", - "display_text": "key1", - "key_spec_index": 0 - }, - { - "name": "key2", - "type": "key", - "display_text": "key2", - "key_spec_index": 0 - }, - { - "name": "len", - "type": "pure-token", - "display_text": "len", - "token": "LEN", - "optional": true - }, - { - "name": "idx", - "type": "pure-token", - "display_text": "idx", - "token": "IDX", - "optional": true - }, - { - "name": "min-match-len", - "type": "integer", - "display_text": "min-match-len", - "token": "MINMATCHLEN", - "optional": true - }, - { - "name": "withmatchlen", - "type": "pure-token", - "display_text": "withmatchlen", - "token": "WITHMATCHLEN", - "optional": true - } - ], - "command_flags": [ - "readonly" - ] - }, - "LINDEX": { - "summary": "Returns an element from a list by its index.", - "since": "1.0.0", - "group": "list", - "complexity": "O(N) where N is the number of elements to traverse to get to the element at index. This makes asking for the first or the last element of the list O(1).", - "acl_categories": [ - "@read", - "@list", - "@slow" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "index", - "type": "integer", - "display_text": "index" - } - ], - "command_flags": [ - "readonly" - ] - }, - "LINSERT": { - "summary": "Inserts an element before or after another element in a list.", - "since": "2.2.0", - "group": "list", - "complexity": "O(N) where N is the number of elements to traverse before seeing the value pivot. This means that inserting somewhere on the left end on the list (head) can be considered O(1) and inserting somewhere on the right end (tail) is O(N).", - "acl_categories": [ - "@write", - "@list", - "@slow" - ], - "arity": 5, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "insert": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "where", - "type": "oneof", - "arguments": [ - { - "name": "before", - "type": "pure-token", - "display_text": "before", - "token": "BEFORE" - }, - { - "name": "after", - "type": "pure-token", - "display_text": "after", - "token": "AFTER" - } - ] - }, - { - "name": "pivot", - "type": "string", - "display_text": "pivot" - }, - { - "name": "element", - "type": "string", - "display_text": "element" - } - ], - "command_flags": [ - "write", - "denyoom" - ] - }, - "LLEN": { - "summary": "Returns the length of a list.", - "since": "1.0.0", - "group": "list", - "complexity": "O(1)", - "acl_categories": [ - "@read", - "@list", - "@fast" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "LMOVE": { - "summary": "Returns an element after popping it from one list and pushing it to another. Deletes the list if the last element was moved.", - "since": "6.2.0", - "group": "list", - "complexity": "O(1)", - "acl_categories": [ - "@write", - "@list", - "@slow" - ], - "arity": 5, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "delete": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "insert": true - } - ], - "arguments": [ - { - "name": "source", - "type": "key", - "display_text": "source", - "key_spec_index": 0 - }, - { - "name": "destination", - "type": "key", - "display_text": "destination", - "key_spec_index": 1 - }, - { - "name": "wherefrom", - "type": "oneof", - "arguments": [ - { - "name": "left", - "type": "pure-token", - "display_text": "left", - "token": "LEFT" - }, - { - "name": "right", - "type": "pure-token", - "display_text": "right", - "token": "RIGHT" - } - ] - }, - { - "name": "whereto", - "type": "oneof", - "arguments": [ - { - "name": "left", - "type": "pure-token", - "display_text": "left", - "token": "LEFT" - }, - { - "name": "right", - "type": "pure-token", - "display_text": "right", - "token": "RIGHT" - } - ] - } - ], - "command_flags": [ - "write", - "denyoom" - ] - }, - "LMPOP": { - "summary": "Returns multiple elements from a list after removing them. Deletes the list if the last element was popped.", - "since": "7.0.0", - "group": "list", - "complexity": "O(N+M) where N is the number of provided keys and M is the number of elements returned.", - "acl_categories": [ - "@write", - "@list", - "@slow" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RW": true, - "access": true, - "delete": true - } - ], - "arguments": [ - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - }, - { - "name": "where", - "type": "oneof", - "arguments": [ - { - "name": "left", - "type": "pure-token", - "display_text": "left", - "token": "LEFT" - }, - { - "name": "right", - "type": "pure-token", - "display_text": "right", - "token": "RIGHT" - } - ] - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true - } - ], - "command_flags": [ - "write", - "movablekeys" - ] - }, - "LOLWUT": { - "summary": "Displays computer art and the Redis version", - "since": "5.0.0", - "group": "server", - "acl_categories": [ - "@read", - "@fast" - ], - "arity": -1, - "arguments": [ - { - "name": "version", - "type": "integer", - "display_text": "version", - "token": "VERSION", - "optional": true - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "LPOP": { - "summary": "Returns the first elements in a list after removing it. Deletes the list if the last element was popped.", - "since": "1.0.0", - "group": "list", - "complexity": "O(N) where N is the number of elements returned", - "history": [ - [ - "6.2.0", - "Added the `count` argument." - ] - ], - "acl_categories": [ - "@write", - "@list", - "@fast" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "since": "6.2.0", - "optional": true - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "LPOS": { - "summary": "Returns the index of matching elements in a list.", - "since": "6.0.6", - "group": "list", - "complexity": "O(N) where N is the number of elements in the list, for the average case. When searching for elements near the head or the tail of the list, or when the MAXLEN option is provided, the command may run in constant time.", - "acl_categories": [ - "@read", - "@list", - "@slow" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "element", - "type": "string", - "display_text": "element" - }, - { - "name": "rank", - "type": "integer", - "display_text": "rank", - "token": "RANK", - "optional": true - }, - { - "name": "num-matches", - "type": "integer", - "display_text": "num-matches", - "token": "COUNT", - "optional": true - }, - { - "name": "len", - "type": "integer", - "display_text": "len", - "token": "MAXLEN", - "optional": true - } - ], - "command_flags": [ - "readonly" - ] - }, - "LPUSH": { - "summary": "Prepends one or more elements to a list. Creates the key if it doesn't exist.", - "since": "1.0.0", - "group": "list", - "complexity": "O(1) for each element added, so O(N) to add N elements when the command is called with multiple arguments.", - "history": [ - [ - "2.4.0", - "Accepts multiple `element` arguments." - ] - ], - "acl_categories": [ - "@write", - "@list", - "@fast" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "insert": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "element", - "type": "string", - "display_text": "element", - "multiple": true - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "LPUSHX": { - "summary": "Prepends one or more elements to a list only when the list exists.", - "since": "2.2.0", - "group": "list", - "complexity": "O(1) for each element added, so O(N) to add N elements when the command is called with multiple arguments.", - "history": [ - [ - "4.0.0", - "Accepts multiple `element` arguments." - ] - ], - "acl_categories": [ - "@write", - "@list", - "@fast" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "insert": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "element", - "type": "string", - "display_text": "element", - "multiple": true - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "LRANGE": { - "summary": "Returns a range of elements from a list.", - "since": "1.0.0", - "group": "list", - "complexity": "O(S+N) where S is the distance of start offset from HEAD for small lists, from nearest end (HEAD or TAIL) for large lists; and N is the number of elements in the specified range.", - "acl_categories": [ - "@read", - "@list", - "@slow" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "start", - "type": "integer", - "display_text": "start" - }, - { - "name": "stop", - "type": "integer", - "display_text": "stop" - } - ], - "command_flags": [ - "readonly" - ] - }, - "LREM": { - "summary": "Removes elements from a list. Deletes the list if the last element was removed.", - "since": "1.0.0", - "group": "list", - "complexity": "O(N+M) where N is the length of the list and M is the number of elements removed.", - "acl_categories": [ - "@write", - "@list", - "@slow" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "count", - "type": "integer", - "display_text": "count" - }, - { - "name": "element", - "type": "string", - "display_text": "element" - } - ], - "command_flags": [ - "write" - ] - }, - "LSET": { - "summary": "Sets the value of an element in a list by its index.", - "since": "1.0.0", - "group": "list", - "complexity": "O(N) where N is the length of the list. Setting either the first or the last element of the list is O(1).", - "acl_categories": [ - "@write", - "@list", - "@slow" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "index", - "type": "integer", - "display_text": "index" - }, - { - "name": "element", - "type": "string", - "display_text": "element" - } - ], - "command_flags": [ - "write", - "denyoom" - ] - }, - "LTRIM": { - "summary": "Removes elements from both ends a list. Deletes the list if all elements were trimmed.", - "since": "1.0.0", - "group": "list", - "complexity": "O(N) where N is the number of elements to be removed by the operation.", - "acl_categories": [ - "@write", - "@list", - "@slow" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "start", - "type": "integer", - "display_text": "start" - }, - { - "name": "stop", - "type": "integer", - "display_text": "stop" - } - ], - "command_flags": [ - "write" - ] - }, - "MEMORY": { - "summary": "A container for memory diagnostics commands.", - "since": "4.0.0", - "group": "server", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" - ], - "arity": -2 - }, - "MEMORY DOCTOR": { - "summary": "Outputs a memory problems report.", - "since": "4.0.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@slow" - ], - "arity": 2, - "hints": [ - "nondeterministic_output", - "request_policy:all_shards", - "response_policy:special" - ] - }, - "MEMORY HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "4.0.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@slow" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "MEMORY MALLOC-STATS": { - "summary": "Returns the allocator statistics.", - "since": "4.0.0", - "group": "server", - "complexity": "Depends on how much memory is allocated, could be slow", - "acl_categories": [ - "@slow" - ], - "arity": 2, - "hints": [ - "nondeterministic_output", - "request_policy:all_shards", - "response_policy:special" - ] - }, - "MEMORY PURGE": { - "summary": "Asks the allocator to release memory.", - "since": "4.0.0", - "group": "server", - "complexity": "Depends on how much memory is allocated, could be slow", - "acl_categories": [ - "@slow" - ], - "arity": 2, - "hints": [ - "request_policy:all_shards", - "response_policy:all_succeeded" - ] - }, - "MEMORY STATS": { - "summary": "Returns details about memory usage.", - "since": "4.0.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@slow" - ], - "arity": 2, - "hints": [ - "nondeterministic_output", - "request_policy:all_shards", - "response_policy:special" - ] - }, - "MEMORY USAGE": { - "summary": "Estimates the memory usage of a key.", - "since": "4.0.0", - "group": "server", - "complexity": "O(N) where N is the number of samples.", - "acl_categories": [ - "@read", - "@slow" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "SAMPLES", - "optional": true - } - ], - "command_flags": [ - "readonly" - ] - }, - "MGET": { - "summary": "Atomically returns the string values of one or more keys.", - "since": "1.0.0", - "group": "string", - "complexity": "O(N) where N is the number of keys to retrieve.", - "acl_categories": [ - "@read", - "@string", - "@fast" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - } - ], - "command_flags": [ - "readonly", - "fast" - ], - "hints": [ - "request_policy:multi_shard" - ] - }, - "MIGRATE": { - "summary": "Atomically transfers a key from one Redis instance to another.", - "since": "2.6.0", - "group": "generic", - "complexity": "This command actually executes a DUMP+DEL in the source instance, and a RESTORE in the target instance. See the pages of these commands for time complexity. Also an O(N) data transfer between the two instances is performed.", - "history": [ - [ - "3.0.0", - "Added the `COPY` and `REPLACE` options." - ], - [ - "3.0.6", - "Added the `KEYS` option." - ], - [ - "4.0.7", - "Added the `AUTH` option." - ], - [ - "6.0.0", - "Added the `AUTH2` option." - ] - ], - "acl_categories": [ - "@keyspace", - "@write", - "@slow", - "@dangerous" - ], - "arity": -6, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 3 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "delete": true - }, - { - "begin_search": { - "type": "keyword", - "spec": { - "keyword": "KEYS", - "startfrom": -2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "delete": true, - "incomplete": true - } - ], - "arguments": [ - { - "name": "host", - "type": "string", - "display_text": "host" - }, - { - "name": "port", - "type": "integer", - "display_text": "port" - }, - { - "name": "key-selector", - "type": "oneof", - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "empty-string", - "type": "pure-token", - "display_text": "empty-string", - "token": "" - } - ] - }, - { - "name": "destination-db", - "type": "integer", - "display_text": "destination-db" - }, - { - "name": "timeout", - "type": "integer", - "display_text": "timeout" - }, - { - "name": "copy", - "type": "pure-token", - "display_text": "copy", - "token": "COPY", - "since": "3.0.0", - "optional": true - }, - { - "name": "replace", - "type": "pure-token", - "display_text": "replace", - "token": "REPLACE", - "since": "3.0.0", - "optional": true - }, - { - "name": "authentication", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "auth", - "type": "string", - "display_text": "password", - "token": "AUTH", - "since": "4.0.7" - }, - { - "name": "auth2", - "type": "block", - "token": "AUTH2", - "since": "6.0.0", - "arguments": [ - { - "name": "username", - "type": "string", - "display_text": "username" - }, - { - "name": "password", - "type": "string", - "display_text": "password" - } - ] - } - ] - }, - { - "name": "keys", - "type": "key", - "display_text": "key", - "key_spec_index": 1, - "token": "KEYS", - "since": "3.0.6", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "write", - "movablekeys" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "MODULE": { - "summary": "A container for module commands.", - "since": "4.0.0", - "group": "server", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" - ], - "arity": -2 - }, - "MODULE HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "5.0.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@slow" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "MODULE LIST": { - "summary": "Returns all loaded modules.", - "since": "4.0.0", - "group": "server", - "complexity": "O(N) where N is the number of loaded modules.", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "noscript" - ], - "hints": [ - "nondeterministic_output_order" - ] - }, - "MODULE LOAD": { - "summary": "Loads a module.", - "since": "4.0.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -3, - "arguments": [ - { - "name": "path", - "type": "string", - "display_text": "path" - }, - { - "name": "arg", - "type": "string", - "display_text": "arg", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "admin", - "noscript", - "no_async_loading" - ] - }, - "MODULE LOADEX": { - "summary": "Loads a module using extended parameters.", - "since": "7.0.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -3, - "arguments": [ - { - "name": "path", - "type": "string", - "display_text": "path" - }, - { - "name": "configs", - "type": "block", - "token": "CONFIG", - "optional": true, - "multiple": true, - "multiple_token": true, - "arguments": [ - { - "name": "name", - "type": "string", - "display_text": "name" - }, - { - "name": "value", - "type": "string", - "display_text": "value" - } - ] - }, - { - "name": "args", - "type": "string", - "display_text": "args", - "token": "ARGS", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "admin", - "noscript", - "no_async_loading" - ] - }, - "MODULE UNLOAD": { - "summary": "Unloads a module.", - "since": "4.0.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 3, - "arguments": [ - { - "name": "name", - "type": "string", - "display_text": "name" - } - ], - "command_flags": [ - "admin", - "noscript", - "no_async_loading" - ] - }, - "MONITOR": { - "summary": "Listens for all requests received by the server in real-time.", - "since": "1.0.0", - "group": "server", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 1, - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ] - }, - "MOVE": { - "summary": "Moves a key to another database.", - "since": "1.0.0", - "group": "generic", - "complexity": "O(1)", - "acl_categories": [ - "@keyspace", - "@write", - "@fast" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "db", - "type": "integer", - "display_text": "db" - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "MSET": { - "summary": "Atomically creates or modifies the string values of one or more keys.", - "since": "1.0.1", - "group": "string", - "complexity": "O(N) where N is the number of keys to set.", - "acl_categories": [ - "@write", - "@string", - "@slow" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 2, - "limit": 0 - } - }, - "OW": true, - "update": true - } - ], - "arguments": [ - { - "name": "data", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "value", - "type": "string", - "display_text": "value" - } - ] - } - ], - "command_flags": [ - "write", - "denyoom" - ], - "hints": [ - "request_policy:multi_shard", - "response_policy:all_succeeded" - ] - }, - "MSETEX": { - "summary": "Atomically sets multiple string keys with a shared expiration in a single operation. Supports flexible argument parsing where condition and expiration flags can appear in any order.", - "since": "8.4.0", - "group": "string", - "complexity": "O(N) where N is the number of keys to set.", - "acl_categories": [ - "@write", - "@string", - "@slow" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 2 - } - }, - "OW": true, - "update": true - } - ], - "arguments": [ - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "data", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "value", - "type": "string", - "display_text": "value" - } - ] - }, - { - "name": "condition", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "nx", - "type": "pure-token", - "display_text": "nx", - "token": "NX" - }, - { - "name": "xx", - "type": "pure-token", - "display_text": "xx", - "token": "XX" - } - ] - }, - { - "name": "expiration", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "seconds", - "type": "integer", - "display_text": "seconds", - "token": "EX" - }, - { - "name": "milliseconds", - "type": "integer", - "display_text": "milliseconds", - "token": "PX" - }, - { - "name": "unix-time-seconds", - "type": "unix-time", - "display_text": "unix-time-seconds", - "token": "EXAT" - }, - { - "name": "unix-time-milliseconds", - "type": "unix-time", - "display_text": "unix-time-milliseconds", - "token": "PXAT" - }, - { - "name": "keepttl", - "type": "pure-token", - "display_text": "keepttl", - "token": "KEEPTTL" - } - ] - } - ], - "command_flags": [ - "write", - "denyoom", - "movablekeys" - ], - "hints": [ - "request_policy:multi_shard", - "response_policy:all_succeeded" - ] - }, - "MSETNX": { - "summary": "Atomically modifies the string values of one or more keys only when all keys don't exist.", - "since": "1.0.1", - "group": "string", - "complexity": "O(N) where N is the number of keys to set.", - "acl_categories": [ - "@write", - "@string", - "@slow" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 2, - "limit": 0 - } - }, - "OW": true, - "insert": true - } - ], - "arguments": [ - { - "name": "data", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "value", - "type": "string", - "display_text": "value" - } - ] - } - ], - "command_flags": [ - "write", - "denyoom" - ] - }, - "MULTI": { - "summary": "Starts a transaction.", - "since": "1.2.0", - "group": "transactions", - "complexity": "O(1)", - "acl_categories": [ - "@fast", - "@transaction" - ], - "arity": 1, - "command_flags": [ - "noscript", - "loading", - "stale", - "fast", - "allow_busy" - ] - }, - "OBJECT": { - "summary": "A container for object introspection commands.", - "since": "2.2.3", - "group": "generic", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" - ], - "arity": -2 - }, - "OBJECT ENCODING": { - "summary": "Returns the internal encoding of a Redis object.", - "since": "2.2.3", - "group": "generic", - "complexity": "O(1)", - "acl_categories": [ - "@keyspace", - "@read", - "@slow" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "OBJECT FREQ": { - "summary": "Returns the logarithmic access frequency counter of a Redis object.", - "since": "4.0.0", - "group": "generic", - "complexity": "O(1)", - "acl_categories": [ - "@keyspace", - "@read", - "@slow" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "OBJECT HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "6.2.0", - "group": "generic", - "complexity": "O(1)", - "acl_categories": [ - "@keyspace", - "@slow" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "OBJECT IDLETIME": { - "summary": "Returns the time since the last access to a Redis object.", - "since": "2.2.3", - "group": "generic", - "complexity": "O(1)", - "acl_categories": [ - "@keyspace", - "@read", - "@slow" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "OBJECT REFCOUNT": { - "summary": "Returns the reference count of a value of a key.", - "since": "2.2.3", - "group": "generic", - "complexity": "O(1)", - "acl_categories": [ - "@keyspace", - "@read", - "@slow" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "PERSIST": { - "summary": "Removes the expiration time of a key.", - "since": "2.2.0", - "group": "generic", - "complexity": "O(1)", - "acl_categories": [ - "@keyspace", - "@write", - "@fast" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "PEXPIRE": { - "summary": "Sets the expiration time of a key in milliseconds.", - "since": "2.6.0", - "group": "generic", - "complexity": "O(1)", - "history": [ - [ - "7.0.0", - "Added options: `NX`, `XX`, `GT` and `LT`." - ] - ], - "acl_categories": [ - "@keyspace", - "@write", - "@fast" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "milliseconds", - "type": "integer", - "display_text": "milliseconds" - }, - { - "name": "condition", - "type": "oneof", - "since": "7.0.0", - "optional": true, - "arguments": [ - { - "name": "nx", - "type": "pure-token", - "display_text": "nx", - "token": "NX" - }, - { - "name": "xx", - "type": "pure-token", - "display_text": "xx", - "token": "XX" - }, - { - "name": "gt", - "type": "pure-token", - "display_text": "gt", - "token": "GT" - }, - { - "name": "lt", - "type": "pure-token", - "display_text": "lt", - "token": "LT" - } - ] - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "PEXPIREAT": { - "summary": "Sets the expiration time of a key to a Unix milliseconds timestamp.", - "since": "2.6.0", - "group": "generic", - "complexity": "O(1)", - "history": [ - [ - "7.0.0", - "Added options: `NX`, `XX`, `GT` and `LT`." - ] - ], - "acl_categories": [ - "@keyspace", - "@write", - "@fast" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "unix-time-milliseconds", - "type": "unix-time", - "display_text": "unix-time-milliseconds" - }, - { - "name": "condition", - "type": "oneof", - "since": "7.0.0", - "optional": true, - "arguments": [ - { - "name": "nx", - "type": "pure-token", - "display_text": "nx", - "token": "NX" - }, - { - "name": "xx", - "type": "pure-token", - "display_text": "xx", - "token": "XX" - }, - { - "name": "gt", - "type": "pure-token", - "display_text": "gt", - "token": "GT" - }, - { - "name": "lt", - "type": "pure-token", - "display_text": "lt", - "token": "LT" - } - ] - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "PEXPIRETIME": { - "summary": "Returns the expiration time of a key as a Unix milliseconds timestamp.", - "since": "7.0.0", - "group": "generic", - "complexity": "O(1)", - "acl_categories": [ - "@keyspace", - "@read", - "@fast" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "PFADD": { - "summary": "Adds elements to a HyperLogLog key. Creates the key if it doesn't exist.", - "since": "2.8.9", - "group": "hyperloglog", - "complexity": "O(1) to add every element.", - "acl_categories": [ - "@write", - "@hyperloglog", - "@fast" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "insert": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "element", - "type": "string", - "display_text": "element", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "PFCOUNT": { - "summary": "Returns the approximated cardinality of the set(s) observed by the HyperLogLog key(s).", - "since": "2.8.9", - "group": "hyperloglog", - "complexity": "O(1) with a very small average constant time when called with a single key. O(N) with N being the number of keys, and much bigger constant times, when called with multiple keys.", - "acl_categories": [ - "@read", - "@hyperloglog", - "@slow" - ], - "arity": -2, - "key_specs": [ - { - "notes": "RW because it may change the internal representation of the key, and propagate to replicas", - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - } - ], - "command_flags": [ - "readonly" - ] - }, - "PFDEBUG": { - "summary": "Internal commands for debugging HyperLogLog values.", - "since": "2.8.9", - "group": "hyperloglog", - "complexity": "N/A", - "acl_categories": [ - "@write", - "@hyperloglog", - "@admin", - "@slow", - "@dangerous" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true - } - ], - "arguments": [ - { - "name": "subcommand", - "type": "string", - "display_text": "subcommand" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "write", - "denyoom", - "admin" - ], - "doc_flags": [ - "syscmd" - ] - }, - "PFMERGE": { - "summary": "Merges one or more HyperLogLog values into a single key.", - "since": "2.8.9", - "group": "hyperloglog", - "complexity": "O(N) to merge N HyperLogLogs, but with high constant times.", - "acl_categories": [ - "@write", - "@hyperloglog", - "@slow" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "insert": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "destkey", - "type": "key", - "display_text": "destkey", - "key_spec_index": 0 - }, - { - "name": "sourcekey", - "type": "key", - "display_text": "sourcekey", - "key_spec_index": 1, - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "write", - "denyoom" - ] - }, - "PFSELFTEST": { - "summary": "An internal command for testing HyperLogLog values.", - "since": "2.8.9", - "group": "hyperloglog", - "complexity": "N/A", - "acl_categories": [ - "@hyperloglog", - "@admin", - "@slow", - "@dangerous" - ], - "arity": 1, - "command_flags": [ - "admin" - ], - "doc_flags": [ - "syscmd" - ] - }, - "PING": { - "summary": "Returns the server's liveliness response.", - "since": "1.0.0", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@fast", - "@connection" - ], - "arity": -1, - "arguments": [ - { - "name": "message", - "type": "string", - "display_text": "message", - "optional": true - } - ], - "command_flags": [ - "fast" - ], - "hints": [ - "request_policy:all_shards", - "response_policy:all_succeeded" - ] - }, - "PSETEX": { - "summary": "Sets both string value and expiration time in milliseconds of a key. The key is created if it doesn't exist.", - "since": "2.6.0", - "group": "string", - "complexity": "O(1)", - "deprecated_since": "2.6.12", - "replaced_by": "`SET` with the `PX` argument", - "acl_categories": [ - "@write", - "@string", - "@slow" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "milliseconds", - "type": "integer", - "display_text": "milliseconds" - }, - { - "name": "value", - "type": "string", - "display_text": "value" - } - ], - "command_flags": [ - "write", - "denyoom" - ], - "doc_flags": [ - "deprecated" - ] - }, - "PSUBSCRIBE": { - "summary": "Listens for messages published to channels that match one or more patterns.", - "since": "2.0.0", - "group": "pubsub", - "complexity": "O(N) where N is the number of patterns to subscribe to.", - "acl_categories": [ - "@pubsub", - "@slow" - ], - "arity": -2, - "arguments": [ - { - "name": "pattern", - "type": "pattern", - "display_text": "pattern", - "multiple": true - } - ], - "command_flags": [ - "denyoom", - "pubsub", - "noscript", - "loading", - "stale" - ] - }, - "PSYNC": { - "summary": "An internal command used in replication.", - "since": "2.8.0", - "group": "server", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -3, - "arguments": [ - { - "name": "replicationid", - "type": "string", - "display_text": "replicationid" - }, - { - "name": "offset", - "type": "integer", - "display_text": "offset" - } - ], - "command_flags": [ - "admin", - "noscript", - "no_async_loading", - "no_multi" - ] - }, - "PTTL": { - "summary": "Returns the expiration time in milliseconds of a key.", - "since": "2.6.0", - "group": "generic", - "complexity": "O(1)", - "history": [ - [ - "2.8.0", - "Added the -2 reply." - ] - ], - "acl_categories": [ - "@keyspace", - "@read", - "@fast" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly", - "fast" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "PUBLISH": { - "summary": "Posts a message to a channel.", - "since": "2.0.0", - "group": "pubsub", - "complexity": "O(N+M) where N is the number of clients subscribed to the receiving channel and M is the total number of subscribed patterns (by any client).", - "acl_categories": [ - "@pubsub", - "@fast" - ], - "arity": 3, - "arguments": [ - { - "name": "channel", - "type": "string", - "display_text": "channel" - }, - { - "name": "message", - "type": "string", - "display_text": "message" - } - ], - "command_flags": [ - "pubsub", - "loading", - "stale", - "fast" - ] - }, - "PUBSUB": { - "summary": "A container for Pub/Sub commands.", - "since": "2.8.0", - "group": "pubsub", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" - ], - "arity": -2 - }, - "PUBSUB CHANNELS": { - "summary": "Returns the active channels.", - "since": "2.8.0", - "group": "pubsub", - "complexity": "O(N) where N is the number of active channels, and assuming constant time pattern matching (relatively short channels and patterns)", - "acl_categories": [ - "@pubsub", - "@slow" - ], - "arity": -2, - "arguments": [ - { - "name": "pattern", - "type": "pattern", - "display_text": "pattern", - "optional": true - } - ], - "command_flags": [ - "pubsub", - "loading", - "stale" - ] - }, - "PUBSUB HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "6.2.0", - "group": "pubsub", - "complexity": "O(1)", - "acl_categories": [ - "@slow" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "PUBSUB NUMPAT": { - "summary": "Returns a count of unique pattern subscriptions.", - "since": "2.8.0", - "group": "pubsub", - "complexity": "O(1)", - "acl_categories": [ - "@pubsub", - "@slow" - ], - "arity": 2, - "command_flags": [ - "pubsub", - "loading", - "stale" - ] - }, - "PUBSUB NUMSUB": { - "summary": "Returns a count of subscribers to channels.", - "since": "2.8.0", - "group": "pubsub", - "complexity": "O(N) for the NUMSUB subcommand, where N is the number of requested channels", - "acl_categories": [ - "@pubsub", - "@slow" - ], - "arity": -2, - "arguments": [ - { - "name": "channel", - "type": "string", - "display_text": "channel", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "pubsub", - "loading", - "stale" - ] - }, - "PUBSUB SHARDCHANNELS": { - "summary": "Returns the active shard channels.", - "since": "7.0.0", - "group": "pubsub", - "complexity": "O(N) where N is the number of active shard channels, and assuming constant time pattern matching (relatively short shard channels).", - "acl_categories": [ - "@pubsub", - "@slow" - ], - "arity": -2, - "arguments": [ - { - "name": "pattern", - "type": "pattern", - "display_text": "pattern", - "optional": true - } - ], - "command_flags": [ - "pubsub", - "loading", - "stale" - ] - }, - "PUBSUB SHARDNUMSUB": { - "summary": "Returns the count of subscribers of shard channels.", - "since": "7.0.0", - "group": "pubsub", - "complexity": "O(N) for the SHARDNUMSUB subcommand, where N is the number of requested shard channels", - "acl_categories": [ - "@pubsub", - "@slow" - ], - "arity": -2, - "arguments": [ - { - "name": "shardchannel", - "type": "string", - "display_text": "shardchannel", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "pubsub", - "loading", - "stale" - ] - }, - "PUNSUBSCRIBE": { - "summary": "Stops listening to messages published to channels that match one or more patterns.", - "since": "2.0.0", - "group": "pubsub", - "complexity": "O(N) where N is the number of patterns to unsubscribe.", - "acl_categories": [ - "@pubsub", - "@slow" - ], - "arity": -1, - "arguments": [ - { - "name": "pattern", - "type": "pattern", - "display_text": "pattern", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "pubsub", - "noscript", - "loading", - "stale" - ] - }, - "QUIT": { - "summary": "Closes the connection.", - "since": "1.0.0", - "group": "connection", - "complexity": "O(1)", - "deprecated_since": "7.2.0", - "replaced_by": "just closing the connection", - "acl_categories": [ - "@fast", - "@connection" - ], - "arity": -1, - "command_flags": [ - "noscript", - "loading", - "stale", - "fast", - "no_auth", - "allow_busy" - ], - "doc_flags": [ - "deprecated" - ] - }, - "RANDOMKEY": { - "summary": "Returns a random key name from the database.", - "since": "1.0.0", - "group": "generic", - "complexity": "O(1)", - "acl_categories": [ - "@keyspace", - "@read", - "@slow" - ], - "arity": 1, - "command_flags": [ - "readonly" - ], - "hints": [ - "request_policy:all_shards", - "response_policy:special", - "nondeterministic_output" - ] - }, - "READONLY": { - "summary": "Enables read-only queries for a connection to a Redis Cluster replica node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", - "acl_categories": [ - "@fast", - "@connection" - ], - "arity": 1, - "command_flags": [ - "loading", - "stale", - "fast" - ] - }, - "READWRITE": { - "summary": "Enables read-write queries for a connection to a Reids Cluster replica node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", - "acl_categories": [ - "@fast", - "@connection" - ], - "arity": 1, - "command_flags": [ - "loading", - "stale", - "fast" - ] - }, - "RENAME": { - "summary": "Renames a key and overwrites the destination.", - "since": "1.0.0", - "group": "generic", - "complexity": "O(1)", - "acl_categories": [ - "@keyspace", - "@write", - "@slow" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "delete": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "newkey", - "type": "key", - "display_text": "newkey", - "key_spec_index": 1 - } - ], - "command_flags": [ - "write" - ] - }, - "RENAMENX": { - "summary": "Renames a key only when the target key name doesn't exist.", - "since": "1.0.0", - "group": "generic", - "complexity": "O(1)", - "history": [ - [ - "3.2.0", - "The command no longer returns an error when source and destination names are the same." - ] - ], - "acl_categories": [ - "@keyspace", - "@write", - "@fast" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "delete": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, - "insert": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "newkey", - "type": "key", - "display_text": "newkey", - "key_spec_index": 1 - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "REPLCONF": { - "summary": "An internal command for configuring the replication stream.", - "since": "3.0.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -1, - "command_flags": [ - "admin", - "noscript", - "loading", - "stale", - "allow_busy" - ], - "doc_flags": [ - "syscmd" - ] - }, - "REPLICAOF": { - "summary": "Configures a server as replica of another, or promotes it to a master.", - "since": "5.0.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 3, - "arguments": [ - { - "name": "args", - "type": "oneof", - "arguments": [ - { - "name": "host-port", - "type": "block", - "arguments": [ - { - "name": "host", - "type": "string", - "display_text": "host" - }, - { - "name": "port", - "type": "integer", - "display_text": "port" - } - ] - }, - { - "name": "no-one", - "type": "block", - "arguments": [ - { - "name": "no", - "type": "pure-token", - "display_text": "no", - "token": "NO" - }, - { - "name": "one", - "type": "pure-token", - "display_text": "one", - "token": "ONE" - } - ] - } - ] - } - ], - "command_flags": [ - "admin", - "noscript", - "stale", - "no_async_loading" - ] - }, - "RESET": { - "summary": "Resets the connection.", - "since": "6.2.0", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@fast", - "@connection" - ], - "arity": 1, - "command_flags": [ - "noscript", - "loading", - "stale", - "fast", - "no_auth", - "allow_busy" - ] - }, - "RESTORE": { - "summary": "Creates a key from the serialized representation of a value.", - "since": "2.6.0", - "group": "generic", - "complexity": "O(1) to create the new key and additional O(N*M) to reconstruct the serialized value, where N is the number of Redis objects composing the value and M their average size. For small string values the time complexity is thus O(1)+O(1*M) where M is small, so simply O(1). However for sorted set values the complexity is O(N*M*log(N)) because inserting values into sorted sets is O(log(N)).", - "history": [ - [ - "3.0.0", - "Added the `REPLACE` modifier." - ], - [ - "5.0.0", - "Added the `ABSTTL` modifier." - ], - [ - "5.0.0", - "Added the `IDLETIME` and `FREQ` options." - ] - ], - "acl_categories": [ - "@keyspace", - "@write", - "@slow", - "@dangerous" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "ttl", - "type": "integer", - "display_text": "ttl" - }, - { - "name": "serialized-value", - "type": "string", - "display_text": "serialized-value" - }, - { - "name": "replace", - "type": "pure-token", - "display_text": "replace", - "token": "REPLACE", - "since": "3.0.0", - "optional": true - }, - { - "name": "absttl", - "type": "pure-token", - "display_text": "absttl", - "token": "ABSTTL", - "since": "5.0.0", - "optional": true - }, - { - "name": "seconds", - "type": "integer", - "display_text": "seconds", - "token": "IDLETIME", - "since": "5.0.0", - "optional": true - }, - { - "name": "frequency", - "type": "integer", - "display_text": "frequency", - "token": "FREQ", - "since": "5.0.0", - "optional": true - } - ], - "command_flags": [ - "write", - "denyoom" - ] - }, - "RESTORE-ASKING": { - "summary": "An internal command for migrating keys in a cluster.", - "since": "3.0.0", - "group": "server", - "complexity": "O(1) to create the new key and additional O(N*M) to reconstruct the serialized value, where N is the number of Redis objects composing the value and M their average size. For small string values the time complexity is thus O(1)+O(1*M) where M is small, so simply O(1). However for sorted set values the complexity is O(N*M*log(N)) because inserting values into sorted sets is O(log(N)).", - "history": [ - [ - "3.0.0", - "Added the `REPLACE` modifier." - ], - [ - "5.0.0", - "Added the `ABSTTL` modifier." - ], - [ - "5.0.0", - "Added the `IDLETIME` and `FREQ` options." - ] - ], - "acl_categories": [ - "@keyspace", - "@write", - "@slow", - "@dangerous" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "ttl", - "type": "integer", - "display_text": "ttl" - }, - { - "name": "serialized-value", - "type": "string", - "display_text": "serialized-value" - }, - { - "name": "replace", - "type": "pure-token", - "display_text": "replace", - "token": "REPLACE", - "since": "3.0.0", - "optional": true - }, - { - "name": "absttl", - "type": "pure-token", - "display_text": "absttl", - "token": "ABSTTL", - "since": "5.0.0", - "optional": true - }, - { - "name": "seconds", - "type": "integer", - "display_text": "seconds", - "token": "IDLETIME", - "since": "5.0.0", - "optional": true - }, - { - "name": "frequency", - "type": "integer", - "display_text": "frequency", - "token": "FREQ", - "since": "5.0.0", - "optional": true - } - ], - "command_flags": [ - "write", - "denyoom", - "asking" - ], - "doc_flags": [ - "syscmd" - ] - }, - "ROLE": { - "summary": "Returns the replication role.", - "since": "2.8.12", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@fast", - "@dangerous" - ], - "arity": 1, - "command_flags": [ - "noscript", - "loading", - "stale", - "fast" - ] - }, - "RPOP": { - "summary": "Returns and removes the last elements of a list. Deletes the list if the last element was popped.", - "since": "1.0.0", - "group": "list", - "complexity": "O(N) where N is the number of elements returned", - "history": [ - [ - "6.2.0", - "Added the `count` argument." - ] - ], - "acl_categories": [ - "@write", - "@list", - "@fast" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "since": "6.2.0", - "optional": true - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "RPOPLPUSH": { - "summary": "Returns the last element of a list after removing and pushing it to another list. Deletes the list if the last element was popped.", - "since": "1.2.0", - "group": "list", - "complexity": "O(1)", - "deprecated_since": "6.2.0", - "replaced_by": "`LMOVE` with the `RIGHT` and `LEFT` arguments", - "acl_categories": [ - "@write", - "@list", - "@slow" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "delete": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "insert": true - } - ], - "arguments": [ - { - "name": "source", - "type": "key", - "display_text": "source", - "key_spec_index": 0 - }, - { - "name": "destination", - "type": "key", - "display_text": "destination", - "key_spec_index": 1 - } - ], - "command_flags": [ - "write", - "denyoom" - ], - "doc_flags": [ - "deprecated" - ] - }, - "RPUSH": { - "summary": "Appends one or more elements to a list. Creates the key if it doesn't exist.", - "since": "1.0.0", - "group": "list", - "complexity": "O(1) for each element added, so O(N) to add N elements when the command is called with multiple arguments.", - "history": [ - [ - "2.4.0", - "Accepts multiple `element` arguments." - ] - ], - "acl_categories": [ - "@write", - "@list", - "@fast" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "insert": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "element", - "type": "string", - "display_text": "element", - "multiple": true - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "RPUSHX": { - "summary": "Appends an element to a list only when the list exists.", - "since": "2.2.0", - "group": "list", - "complexity": "O(1) for each element added, so O(N) to add N elements when the command is called with multiple arguments.", - "history": [ - [ - "4.0.0", - "Accepts multiple `element` arguments." - ] - ], - "acl_categories": [ - "@write", - "@list", - "@fast" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "insert": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "element", - "type": "string", - "display_text": "element", - "multiple": true - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "SADD": { - "summary": "Adds one or more members to a set. Creates the key if it doesn't exist.", - "since": "1.0.0", - "group": "set", - "complexity": "O(1) for each element added, so O(N) to add N elements when the command is called with multiple arguments.", - "history": [ - [ - "2.4.0", - "Accepts multiple `member` arguments." - ] - ], - "acl_categories": [ - "@write", - "@set", - "@fast" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "insert": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "member", - "type": "string", - "display_text": "member", - "multiple": true - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "SAVE": { - "summary": "Synchronously saves the database(s) to disk.", - "since": "1.0.0", - "group": "server", - "complexity": "O(N) where N is the total number of keys in all databases", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 1, - "command_flags": [ - "admin", - "noscript", - "no_async_loading", - "no_multi" - ] - }, - "SCAN": { - "summary": "Iterates over the key names in the database.", - "since": "2.8.0", - "group": "generic", - "complexity": "O(1) for every call. O(N) for a complete iteration, including enough command calls for the cursor to return back to 0. N is the number of elements inside the collection.", - "history": [ - [ - "6.0.0", - "Added the `TYPE` subcommand." - ] - ], - "acl_categories": [ - "@keyspace", - "@read", - "@slow" - ], - "arity": -2, - "arguments": [ - { - "name": "cursor", - "type": "integer", - "display_text": "cursor" - }, - { - "name": "pattern", - "type": "pattern", - "display_text": "pattern", - "token": "MATCH", - "optional": true - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true - }, - { - "name": "type", - "type": "string", - "display_text": "type", - "token": "TYPE", - "since": "6.0.0", - "optional": true - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output", - "request_policy:special", - "response_policy:special" - ] - }, - "SCARD": { - "summary": "Returns the number of members in a set.", - "since": "1.0.0", - "group": "set", - "complexity": "O(1)", - "acl_categories": [ - "@read", - "@set", - "@fast" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "SCRIPT": { - "summary": "A container for Lua scripts management commands.", - "since": "2.6.0", - "group": "scripting", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" - ], - "arity": -2 - }, - "SCRIPT DEBUG": { - "summary": "Sets the debug mode of server-side Lua scripts.", - "since": "3.2.0", - "group": "scripting", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@scripting" - ], - "arity": 3, - "arguments": [ - { - "name": "mode", - "type": "oneof", - "arguments": [ - { - "name": "yes", - "type": "pure-token", - "display_text": "yes", - "token": "YES" - }, - { - "name": "sync", - "type": "pure-token", - "display_text": "sync", - "token": "SYNC" - }, - { - "name": "no", - "type": "pure-token", - "display_text": "no", - "token": "NO" - } - ] - } - ], - "command_flags": [ - "noscript" - ] - }, - "SCRIPT EXISTS": { - "summary": "Determines whether server-side Lua scripts exist in the script cache.", - "since": "2.6.0", - "group": "scripting", - "complexity": "O(N) with N being the number of scripts to check (so checking a single script is an O(1) operation).", - "acl_categories": [ - "@slow", - "@scripting" - ], - "arity": -3, - "arguments": [ - { - "name": "sha1", - "type": "string", - "display_text": "sha1", - "multiple": true - } - ], - "command_flags": [ - "noscript" - ], - "hints": [ - "request_policy:all_shards", - "response_policy:agg_logical_and" - ] - }, - "SCRIPT FLUSH": { - "summary": "Removes all server-side Lua scripts from the script cache.", - "since": "2.6.0", - "group": "scripting", - "complexity": "O(N) with N being the number of scripts in cache", - "history": [ - [ - "6.2.0", - "Added the `ASYNC` and `SYNC` flushing mode modifiers." - ] - ], - "acl_categories": [ - "@slow", - "@scripting" - ], - "arity": -2, - "arguments": [ - { - "name": "flush-type", - "type": "oneof", - "since": "6.2.0", - "optional": true, - "arguments": [ - { - "name": "async", - "type": "pure-token", - "display_text": "async", - "token": "ASYNC" - }, - { - "name": "sync", - "type": "pure-token", - "display_text": "sync", - "token": "SYNC" - } - ] - } - ], - "command_flags": [ - "noscript" - ], - "hints": [ - "request_policy:all_nodes", - "response_policy:all_succeeded" - ] - }, - "SCRIPT HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "5.0.0", - "group": "scripting", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@scripting" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "SCRIPT KILL": { - "summary": "Terminates a server-side Lua script during execution.", - "since": "2.6.0", - "group": "scripting", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@scripting" - ], - "arity": 2, - "command_flags": [ - "noscript", - "allow_busy" - ], - "hints": [ - "request_policy:all_shards", - "response_policy:one_succeeded" - ] - }, - "SCRIPT LOAD": { - "summary": "Loads a server-side Lua script to the script cache.", - "since": "2.6.0", - "group": "scripting", - "complexity": "O(N) with N being the length in bytes of the script body.", - "acl_categories": [ - "@slow", - "@scripting" - ], - "arity": 3, - "arguments": [ - { - "name": "script", - "type": "string", - "display_text": "script" - } - ], - "command_flags": [ - "noscript", - "stale" - ], - "hints": [ - "request_policy:all_nodes", - "response_policy:all_succeeded" - ] - }, - "SDIFF": { - "summary": "Returns the difference of multiple sets.", - "since": "1.0.0", - "group": "set", - "complexity": "O(N) where N is the total number of elements in all given sets.", - "acl_categories": [ - "@read", - "@set", - "@slow" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output_order" - ] - }, - "SDIFFSTORE": { - "summary": "Stores the difference of multiple sets in a key.", - "since": "1.0.0", - "group": "set", - "complexity": "O(N) where N is the total number of elements in all given sets.", - "acl_categories": [ - "@write", - "@set", - "@slow" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, - "update": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "destination", - "type": "key", - "display_text": "destination", - "key_spec_index": 0 - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 1, - "multiple": true - } - ], - "command_flags": [ - "write", - "denyoom" - ] - }, - "SELECT": { - "summary": "Changes the selected database.", - "since": "1.0.0", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@fast", - "@connection" - ], - "arity": 2, - "arguments": [ - { - "name": "index", - "type": "integer", - "display_text": "index" - } - ], - "command_flags": [ - "loading", - "stale", - "fast" - ] - }, - "SET": { - "summary": "Sets the string value of a key, ignoring its type. The key is created if it doesn't exist.", - "since": "1.0.0", - "group": "string", - "complexity": "O(1)", - "history": [ - [ - "2.6.12", - "Added the `EX`, `PX`, `NX` and `XX` options." - ], - [ - "6.0.0", - "Added the `KEEPTTL` option." - ], - [ - "6.2.0", - "Added the `GET`, `EXAT` and `PXAT` option." - ], - [ - "7.0.0", - "Allowed the `NX` and `GET` options to be used together." - ], - [ - "8.4.0", - "Added 'IFEQ', 'IFNE', 'IFDEQ', 'IFDNE' options." - ] - ], - "acl_categories": [ - "@write", - "@string", - "@slow" - ], - "arity": -3, - "key_specs": [ - { - "notes": "RW and ACCESS due to the optional `GET` argument", - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true, - "variable_flags": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "value", - "type": "string", - "display_text": "value" - }, - { - "name": "condition", - "type": "oneof", - "since": "2.6.12", - "optional": true, - "arguments": [ - { - "name": "nx", - "type": "pure-token", - "display_text": "nx", - "token": "NX" - }, - { - "name": "xx", - "type": "pure-token", - "display_text": "xx", - "token": "XX" - }, - { - "name": "ifeq-value", - "type": "string", - "display_text": "ifeq-value", - "token": "IFEQ", - "since": "8.4.0" - }, - { - "name": "ifne-value", - "type": "string", - "display_text": "ifne-value", - "token": "IFNE", - "since": "8.4.0" - }, - { - "name": "ifdeq-digest", - "type": "integer", - "display_text": "ifdeq-digest", - "token": "IFDEQ", - "since": "8.4.0" - }, - { - "name": "ifdne-digest", - "type": "integer", - "display_text": "ifdne-digest", - "token": "IFDNE", - "since": "8.4.0" - } - ] - }, - { - "name": "get", - "type": "pure-token", - "display_text": "get", - "token": "GET", - "since": "6.2.0", - "optional": true - }, - { - "name": "expiration", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "seconds", - "type": "integer", - "display_text": "seconds", - "token": "EX", - "since": "2.6.12" - }, - { - "name": "milliseconds", - "type": "integer", - "display_text": "milliseconds", - "token": "PX", - "since": "2.6.12" - }, - { - "name": "unix-time-seconds", - "type": "unix-time", - "display_text": "unix-time-seconds", - "token": "EXAT", - "since": "6.2.0" - }, - { - "name": "unix-time-milliseconds", - "type": "unix-time", - "display_text": "unix-time-milliseconds", - "token": "PXAT", - "since": "6.2.0" - }, - { - "name": "keepttl", - "type": "pure-token", - "display_text": "keepttl", - "token": "KEEPTTL", - "since": "6.0.0" - } - ] - } - ], - "command_flags": [ - "write", - "denyoom" - ] - }, - "SETBIT": { - "summary": "Sets or clears the bit at offset of the string value. Creates the key if it doesn't exist.", - "since": "2.2.0", - "group": "bitmap", - "complexity": "O(1)", - "acl_categories": [ - "@write", - "@bitmap", - "@slow" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "offset", - "type": "integer", - "display_text": "offset" - }, - { - "name": "value", - "type": "integer", - "display_text": "value" - } - ], - "command_flags": [ - "write", - "denyoom" - ] - }, - "SETEX": { - "summary": "Sets the string value and expiration time of a key. Creates the key if it doesn't exist.", - "since": "2.0.0", - "group": "string", - "complexity": "O(1)", - "deprecated_since": "2.6.12", - "replaced_by": "`SET` with the `EX` argument", - "acl_categories": [ - "@write", - "@string", - "@slow" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "seconds", - "type": "integer", - "display_text": "seconds" - }, - { - "name": "value", - "type": "string", - "display_text": "value" - } - ], - "command_flags": [ - "write", - "denyoom" - ], - "doc_flags": [ - "deprecated" - ] - }, - "SETNX": { - "summary": "Set the string value of a key only when the key doesn't exist.", - "since": "1.0.0", - "group": "string", - "complexity": "O(1)", - "deprecated_since": "2.6.12", - "replaced_by": "`SET` with the `NX` argument", - "acl_categories": [ - "@write", - "@string", - "@fast" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, - "insert": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "value", - "type": "string", - "display_text": "value" - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ], - "doc_flags": [ - "deprecated" - ] - }, - "SETRANGE": { - "summary": "Overwrites a part of a string value with another by an offset. Creates the key if it doesn't exist.", - "since": "2.2.0", - "group": "string", - "complexity": "O(1), not counting the time taken to copy the new string in place. Usually, this string is very small so the amortized complexity is O(1). Otherwise, complexity is O(M) with M being the length of the value argument.", - "acl_categories": [ - "@write", - "@string", - "@slow" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "offset", - "type": "integer", - "display_text": "offset" - }, - { - "name": "value", - "type": "string", - "display_text": "value" - } - ], - "command_flags": [ - "write", - "denyoom" - ] - }, - "SHUTDOWN": { - "summary": "Synchronously saves the database(s) to disk and shuts down the Redis server.", - "since": "1.0.0", - "group": "server", - "complexity": "O(N) when saving, where N is the total number of keys in all databases when saving data, otherwise O(1)", - "history": [ - [ - "7.0.0", - "Added the `NOW`, `FORCE` and `ABORT` modifiers." - ] - ], - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -1, - "arguments": [ - { - "name": "save-selector", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "nosave", - "type": "pure-token", - "display_text": "nosave", - "token": "NOSAVE" - }, - { - "name": "save", - "type": "pure-token", - "display_text": "save", - "token": "SAVE" - } - ] - }, - { - "name": "now", - "type": "pure-token", - "display_text": "now", - "token": "NOW", - "since": "7.0.0", - "optional": true - }, - { - "name": "force", - "type": "pure-token", - "display_text": "force", - "token": "FORCE", - "since": "7.0.0", - "optional": true - }, - { - "name": "abort", - "type": "pure-token", - "display_text": "abort", - "token": "ABORT", - "since": "7.0.0", - "optional": true - } - ], - "command_flags": [ - "admin", - "noscript", - "loading", - "stale", - "no_multi", - "allow_busy" - ] - }, - "SINTER": { - "summary": "Returns the intersect of multiple sets.", - "since": "1.0.0", - "group": "set", - "complexity": "O(N*M) worst case where N is the cardinality of the smallest set and M is the number of sets.", - "acl_categories": [ - "@read", - "@set", - "@slow" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output_order" - ] - }, - "SINTERCARD": { - "summary": "Returns the number of members of the intersect of multiple sets.", - "since": "7.0.0", - "group": "set", - "complexity": "O(N*M) worst case where N is the cardinality of the smallest set and M is the number of sets.", - "acl_categories": [ - "@read", - "@set", - "@slow" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - }, - { - "name": "limit", - "type": "integer", - "display_text": "limit", - "token": "LIMIT", - "optional": true - } - ], - "command_flags": [ - "readonly", - "movablekeys" - ] - }, - "SINTERSTORE": { - "summary": "Stores the intersect of multiple sets in a key.", - "since": "1.0.0", - "group": "set", - "complexity": "O(N*M) worst case where N is the cardinality of the smallest set and M is the number of sets.", - "acl_categories": [ - "@write", - "@set", - "@slow" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, - "update": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "destination", - "type": "key", - "display_text": "destination", - "key_spec_index": 0 - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 1, - "multiple": true - } - ], - "command_flags": [ - "write", - "denyoom" - ] - }, - "SISMEMBER": { - "summary": "Determines whether a member belongs to a set.", - "since": "1.0.0", - "group": "set", - "complexity": "O(1)", - "acl_categories": [ - "@read", - "@set", - "@fast" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "member", - "type": "string", - "display_text": "member" - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "SLAVEOF": { - "summary": "Sets a Redis server as a replica of another, or promotes it to being a master.", - "since": "1.0.0", - "group": "server", - "complexity": "O(1)", - "deprecated_since": "5.0.0", - "replaced_by": "`REPLICAOF`", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 3, - "arguments": [ - { - "name": "args", - "type": "oneof", - "arguments": [ - { - "name": "host-port", - "type": "block", - "arguments": [ - { - "name": "host", - "type": "string", - "display_text": "host" - }, - { - "name": "port", - "type": "integer", - "display_text": "port" - } - ] - }, - { - "name": "no-one", - "type": "block", - "arguments": [ - { - "name": "no", - "type": "pure-token", - "display_text": "no", - "token": "NO" - }, - { - "name": "one", - "type": "pure-token", - "display_text": "one", - "token": "ONE" - } - ] - } - ] - } - ], - "command_flags": [ - "admin", - "noscript", - "stale", - "no_async_loading" - ], - "doc_flags": [ - "deprecated" - ] - }, - "SLOWLOG": { - "summary": "A container for slow log commands.", - "since": "2.2.12", - "group": "server", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" - ], - "arity": -2 - }, - "SLOWLOG GET": { - "summary": "Returns the slow log's entries.", - "since": "2.2.12", - "group": "server", - "complexity": "O(N) where N is the number of entries returned", - "history": [ - [ - "4.0.0", - "Added client IP address, port and name to the reply." - ] - ], - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -2, - "arguments": [ - { - "name": "count", - "type": "integer", - "display_text": "count", - "optional": true - } - ], - "command_flags": [ - "admin", - "loading", - "stale" - ], - "hints": [ - "request_policy:all_nodes", - "nondeterministic_output" - ] - }, - "SLOWLOG HELP": { - "summary": "Show helpful text about the different subcommands", - "since": "6.2.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@slow" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "SLOWLOG LEN": { - "summary": "Returns the number of entries in the slow log.", - "since": "2.2.12", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "loading", - "stale" - ], - "hints": [ - "request_policy:all_nodes", - "response_policy:agg_sum", - "nondeterministic_output" - ] - }, - "SLOWLOG RESET": { - "summary": "Clears all entries from the slow log.", - "since": "2.2.12", - "group": "server", - "complexity": "O(N) where N is the number of entries in the slowlog", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "loading", - "stale" - ], - "hints": [ - "request_policy:all_nodes", - "response_policy:all_succeeded" - ] - }, - "SMEMBERS": { - "summary": "Returns all members of a set.", - "since": "1.0.0", - "group": "set", - "complexity": "O(N) where N is the set cardinality.", - "acl_categories": [ - "@read", - "@set", - "@slow" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output_order" - ] - }, - "SMISMEMBER": { - "summary": "Determines whether multiple members belong to a set.", - "since": "6.2.0", - "group": "set", - "complexity": "O(N) where N is the number of elements being checked for membership", - "acl_categories": [ - "@read", - "@set", - "@fast" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "member", - "type": "string", - "display_text": "member", - "multiple": true - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "SMOVE": { - "summary": "Moves a member from one set to another.", - "since": "1.0.0", - "group": "set", - "complexity": "O(1)", - "acl_categories": [ - "@write", - "@set", - "@fast" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "delete": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "insert": true - } - ], - "arguments": [ - { - "name": "source", - "type": "key", - "display_text": "source", - "key_spec_index": 0 - }, - { - "name": "destination", - "type": "key", - "display_text": "destination", - "key_spec_index": 1 - }, - { - "name": "member", - "type": "string", - "display_text": "member" - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "SORT": { - "summary": "Sorts the elements in a list, a set, or a sorted set, optionally storing the result.", - "since": "1.0.0", - "group": "generic", - "complexity": "O(N+M*log(M)) where N is the number of elements in the list or set to sort, and M the number of returned elements. When the elements are not sorted, complexity is O(N).", - "acl_categories": [ - "@write", - "@set", - "@sortedset", - "@list", - "@slow", - "@dangerous" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - }, - { - "notes": "For the optional BY/GET keyword. It is marked 'unknown' because the key names derive from the content of the key we sort", - "begin_search": { - "type": "unknown", - "spec": {} - }, - "find_keys": { - "type": "unknown", - "spec": {} - }, - "RO": true, - "access": true - }, - { - "notes": "For the optional STORE keyword. It is marked 'unknown' because the keyword can appear anywhere in the argument array", - "begin_search": { - "type": "unknown", - "spec": {} - }, - "find_keys": { - "type": "unknown", - "spec": {} - }, - "OW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "by-pattern", - "type": "pattern", - "display_text": "pattern", - "key_spec_index": 1, - "token": "BY", - "optional": true - }, - { - "name": "limit", - "type": "block", - "token": "LIMIT", - "optional": true, - "arguments": [ - { - "name": "offset", - "type": "integer", - "display_text": "offset" - }, - { - "name": "count", - "type": "integer", - "display_text": "count" - } - ] - }, - { - "name": "get-pattern", - "type": "pattern", - "display_text": "pattern", - "key_spec_index": 1, - "token": "GET", - "optional": true, - "multiple": true, - "multiple_token": true - }, - { - "name": "order", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "asc", - "type": "pure-token", - "display_text": "asc", - "token": "ASC" - }, - { - "name": "desc", - "type": "pure-token", - "display_text": "desc", - "token": "DESC" - } - ] - }, - { - "name": "sorting", - "type": "pure-token", - "display_text": "sorting", - "token": "ALPHA", - "optional": true - }, - { - "name": "destination", - "type": "key", - "display_text": "destination", - "key_spec_index": 2, - "token": "STORE", - "optional": true - } - ], - "command_flags": [ - "write", - "denyoom", - "movablekeys" - ] - }, - "SORT_RO": { - "summary": "Returns the sorted elements of a list, a set, or a sorted set.", - "since": "7.0.0", - "group": "generic", - "complexity": "O(N+M*log(M)) where N is the number of elements in the list or set to sort, and M the number of returned elements. When the elements are not sorted, complexity is O(N).", - "acl_categories": [ - "@read", - "@set", - "@sortedset", - "@list", - "@slow", - "@dangerous" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - }, - { - "notes": "For the optional BY/GET keyword. It is marked 'unknown' because the key names derive from the content of the key we sort", - "begin_search": { - "type": "unknown", - "spec": {} - }, - "find_keys": { - "type": "unknown", - "spec": {} - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "by-pattern", - "type": "pattern", - "display_text": "pattern", - "key_spec_index": 1, - "token": "BY", - "optional": true - }, - { - "name": "limit", - "type": "block", - "token": "LIMIT", - "optional": true, - "arguments": [ - { - "name": "offset", - "type": "integer", - "display_text": "offset" - }, - { - "name": "count", - "type": "integer", - "display_text": "count" - } - ] - }, - { - "name": "get-pattern", - "type": "pattern", - "display_text": "pattern", - "key_spec_index": 1, - "token": "GET", - "optional": true, - "multiple": true, - "multiple_token": true - }, - { - "name": "order", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "asc", - "type": "pure-token", - "display_text": "asc", - "token": "ASC" - }, - { - "name": "desc", - "type": "pure-token", - "display_text": "desc", - "token": "DESC" - } - ] - }, - { - "name": "sorting", - "type": "pure-token", - "display_text": "sorting", - "token": "ALPHA", - "optional": true - } - ], - "command_flags": [ - "readonly", - "movablekeys" - ] - }, - "SPOP": { - "summary": "Returns one or more random members from a set after removing them. Deletes the set if the last member was popped.", - "since": "1.0.0", - "group": "set", - "complexity": "Without the count argument O(1), otherwise O(N) where N is the value of the passed count.", - "history": [ - [ - "3.2.0", - "Added the `count` argument." - ] - ], - "acl_categories": [ - "@write", - "@set", - "@fast" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "since": "3.2.0", - "optional": true - } - ], - "command_flags": [ - "write", - "fast" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "SPUBLISH": { - "summary": "Post a message to a shard channel", - "since": "7.0.0", - "group": "pubsub", - "complexity": "O(N) where N is the number of clients subscribed to the receiving shard channel.", - "acl_categories": [ - "@pubsub", - "@fast" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "not_key": true - } - ], - "arguments": [ - { - "name": "shardchannel", - "type": "string", - "display_text": "shardchannel" - }, - { - "name": "message", - "type": "string", - "display_text": "message" - } - ], - "command_flags": [ - "pubsub", - "loading", - "stale", - "fast" - ] - }, - "SRANDMEMBER": { - "summary": "Get one or multiple random members from a set", - "since": "1.0.0", - "group": "set", - "complexity": "Without the count argument O(1), otherwise O(N) where N is the absolute value of the passed count.", - "history": [ - [ - "2.6.0", - "Added the optional `count` argument." - ] - ], - "acl_categories": [ - "@read", - "@set", - "@slow" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "since": "2.6.0", - "optional": true - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "SREM": { - "summary": "Removes one or more members from a set. Deletes the set if the last member was removed.", - "since": "1.0.0", - "group": "set", - "complexity": "O(N) where N is the number of members to be removed.", - "history": [ - [ - "2.4.0", - "Accepts multiple `member` arguments." - ] - ], - "acl_categories": [ - "@write", - "@set", - "@fast" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "member", - "type": "string", - "display_text": "member", - "multiple": true - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "SSCAN": { - "summary": "Iterates over members of a set.", - "since": "2.8.0", - "group": "set", - "complexity": "O(1) for every call. O(N) for a complete iteration, including enough command calls for the cursor to return back to 0. N is the number of elements inside the collection.", - "acl_categories": [ - "@read", - "@set", - "@slow" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "cursor", - "type": "integer", - "display_text": "cursor" - }, - { - "name": "pattern", - "type": "pattern", - "display_text": "pattern", - "token": "MATCH", - "optional": true - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "SSUBSCRIBE": { - "summary": "Listens for messages published to shard channels.", - "since": "7.0.0", - "group": "pubsub", - "complexity": "O(N) where N is the number of shard channels to subscribe to.", - "acl_categories": [ - "@pubsub", - "@slow" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 0 - } - }, - "not_key": true - } - ], - "arguments": [ - { - "name": "shardchannel", - "type": "string", - "display_text": "shardchannel", - "multiple": true - } - ], - "command_flags": [ - "denyoom", - "pubsub", - "noscript", - "loading", - "stale" - ] - }, - "STRLEN": { - "summary": "Returns the length of a string value.", - "since": "2.2.0", - "group": "string", - "complexity": "O(1)", - "acl_categories": [ - "@read", - "@string", - "@fast" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "SUBSCRIBE": { - "summary": "Listens for messages published to channels.", - "since": "2.0.0", - "group": "pubsub", - "complexity": "O(N) where N is the number of channels to subscribe to.", - "acl_categories": [ - "@pubsub", - "@slow" - ], - "arity": -2, - "arguments": [ - { - "name": "channel", - "type": "string", - "display_text": "channel", - "multiple": true - } - ], - "command_flags": [ - "denyoom", - "pubsub", - "noscript", - "loading", - "stale" - ] - }, - "SUBSTR": { - "summary": "Returns a substring from a string value.", - "since": "1.0.0", - "group": "string", - "complexity": "O(N) where N is the length of the returned string. The complexity is ultimately determined by the returned length, but because creating a substring from an existing string is very cheap, it can be considered O(1) for small strings.", - "deprecated_since": "2.0.0", - "replaced_by": "`GETRANGE`", - "acl_categories": [ - "@read", - "@string", - "@slow" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "start", - "type": "integer", - "display_text": "start" - }, - { - "name": "end", - "type": "integer", - "display_text": "end" - } - ], - "command_flags": [ - "readonly" - ], - "doc_flags": [ - "deprecated" - ] - }, - "SUNION": { - "summary": "Returns the union of multiple sets.", - "since": "1.0.0", - "group": "set", - "complexity": "O(N) where N is the total number of elements in all given sets.", - "acl_categories": [ - "@read", - "@set", - "@slow" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output_order" - ] - }, - "SUNIONSTORE": { - "summary": "Stores the union of multiple sets in a key.", - "since": "1.0.0", - "group": "set", - "complexity": "O(N) where N is the total number of elements in all given sets.", - "acl_categories": [ - "@write", - "@set", - "@slow" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, - "update": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "destination", - "type": "key", - "display_text": "destination", - "key_spec_index": 0 - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 1, - "multiple": true - } - ], - "command_flags": [ - "write", - "denyoom" - ] - }, - "SUNSUBSCRIBE": { - "summary": "Stops listening to messages posted to shard channels.", - "since": "7.0.0", - "group": "pubsub", - "complexity": "O(N) where N is the number of shard channels to unsubscribe.", - "acl_categories": [ - "@pubsub", - "@slow" - ], - "arity": -1, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 0 - } - }, - "not_key": true - } - ], - "arguments": [ - { - "name": "shardchannel", - "type": "string", - "display_text": "shardchannel", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "pubsub", - "noscript", - "loading", - "stale" - ] - }, - "SWAPDB": { - "summary": "Swaps two Redis databases.", - "since": "4.0.0", - "group": "server", - "complexity": "O(N) where N is the count of clients watching or blocking on keys from both databases.", - "acl_categories": [ - "@keyspace", - "@write", - "@fast", - "@dangerous" - ], - "arity": 3, - "arguments": [ - { - "name": "index1", - "type": "integer", - "display_text": "index1" - }, - { - "name": "index2", - "type": "integer", - "display_text": "index2" - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "SYNC": { - "summary": "An internal command used in replication.", - "since": "1.0.0", - "group": "server", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 1, - "command_flags": [ - "admin", - "noscript", - "no_async_loading", - "no_multi" - ] - }, - "TIME": { - "summary": "Returns the server time.", - "since": "2.6.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@fast" - ], - "arity": 1, - "command_flags": [ - "loading", - "stale", - "fast" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "TOUCH": { - "summary": "Returns the number of existing keys out of those specified after updating the time they were last accessed.", - "since": "3.2.1", - "group": "generic", - "complexity": "O(N) where N is the number of keys that will be touched.", - "acl_categories": [ - "@keyspace", - "@read", - "@fast" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 0 - } - }, - "RO": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - } - ], - "command_flags": [ - "readonly", - "fast" - ], - "hints": [ - "request_policy:multi_shard", - "response_policy:agg_sum" - ] - }, - "TRIMSLOTS": { - "summary": "Trim the keys that belong to specified slots.", - "since": "8.4.0", - "group": "server", - "complexity": "O(N) where N is the total number of keys in all databases", - "acl_categories": [ - "@keyspace", - "@write", - "@slow", - "@dangerous" - ], - "arity": -5, - "arguments": [ - { - "name": "ranges", - "type": "block", - "token": "RANGES", - "arguments": [ - { - "name": "numranges", - "type": "integer", - "display_text": "numranges" - }, - { - "name": "slots", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "startslot", - "type": "integer", - "display_text": "startslot" - }, - { - "name": "endslot", - "type": "integer", - "display_text": "endslot" - } - ] - } - ] - } - ], - "command_flags": [ - "write" - ] - }, - "TTL": { - "summary": "Returns the expiration time in seconds of a key.", - "since": "1.0.0", - "group": "generic", - "complexity": "O(1)", - "history": [ - [ - "2.8.0", - "Added the -2 reply." - ] - ], - "acl_categories": [ - "@keyspace", - "@read", - "@fast" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly", - "fast" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "TYPE": { - "summary": "Determines the type of value stored at a key.", - "since": "1.0.0", - "group": "generic", - "complexity": "O(1)", - "acl_categories": [ - "@keyspace", - "@read", - "@fast" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "UNLINK": { - "summary": "Asynchronously deletes one or more keys.", - "since": "4.0.0", - "group": "generic", - "complexity": "O(1) for each key removed regardless of its size. Then the command does O(N) work in a different thread in order to reclaim memory, where N is the number of allocations the deleted objects where composed of.", - "acl_categories": [ - "@keyspace", - "@write", - "@fast" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 0 - } - }, - "RM": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - } - ], - "command_flags": [ - "write", - "fast" - ], - "hints": [ - "request_policy:multi_shard", - "response_policy:agg_sum" - ] - }, - "UNSUBSCRIBE": { - "summary": "Stops listening to messages posted to channels.", - "since": "2.0.0", - "group": "pubsub", - "complexity": "O(N) where N is the number of channels to unsubscribe.", - "acl_categories": [ - "@pubsub", - "@slow" - ], - "arity": -1, - "arguments": [ - { - "name": "channel", - "type": "string", - "display_text": "channel", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "pubsub", - "noscript", - "loading", - "stale" - ] - }, - "UNWATCH": { - "summary": "Forgets about watched keys of a transaction.", - "since": "2.2.0", - "group": "transactions", - "complexity": "O(1)", - "acl_categories": [ - "@fast", - "@transaction" - ], - "arity": 1, - "command_flags": [ - "noscript", - "loading", - "stale", - "fast", - "allow_busy" - ] - }, - "VADD": { - "summary": "Add one or more elements to a vector set, or update its vector if it already exists", - "since": "8.0.0", - "group": "module", - "arity": -5, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "reduce", - "type": "block", - "token": "REDUCE", - "optional": true, - "arguments": [ - { - "name": "dim", - "type": "integer", - "display_text": "dim" - } - ] - }, - { - "name": "format", - "type": "oneof", - "arguments": [ - { - "name": "fp32", - "type": "pure-token", - "display_text": "fp32", - "token": "FP32" - }, - { - "name": "values", - "type": "pure-token", - "display_text": "values", - "token": "VALUES" - } - ] - }, - { - "name": "vector", - "type": "string", - "display_text": "vector" - }, - { - "name": "element", - "type": "string", - "display_text": "element" - }, - { - "name": "cas", - "type": "pure-token", - "display_text": "cas", - "token": "CAS", - "optional": true - }, - { - "name": "quant_type", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "noquant", - "type": "pure-token", - "display_text": "noquant", - "token": "NOQUANT" - }, - { - "name": "bin", - "type": "pure-token", - "display_text": "bin", - "token": "BIN" - }, - { - "name": "q8", - "type": "pure-token", - "display_text": "q8", - "token": "Q8" - } - ] - }, - { - "name": "build-exploration-factor", - "type": "integer", - "display_text": "build-exploration-factor", - "token": "EF", - "optional": true - }, - { - "name": "attributes", - "type": "string", - "display_text": "attributes", - "token": "SETATTR", - "optional": true - }, - { - "name": "numlinks", - "type": "integer", - "display_text": "numlinks", - "token": "M", - "optional": true - } - ], - "command_flags": [ - "write", - "denyoom", - "module" - ], - "module": "vectorset" - }, - "VCARD": { - "summary": "Return the number of elements in a vector set", - "since": "8.0.0", - "group": "module", - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly", - "module", - "fast" - ], - "module": "vectorset" - }, - "VDIM": { - "summary": "Return the dimension of vectors in the vector set", - "since": "8.0.0", - "group": "module", - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly", - "module", - "fast" - ], - "module": "vectorset" - }, - "VEMB": { - "summary": "Return the vector associated with an element", - "since": "8.0.0", - "group": "module", - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "element", - "type": "string", - "display_text": "element" - }, - { - "name": "raw", - "type": "pure-token", - "display_text": "raw", - "token": "RAW", - "optional": true - } - ], - "command_flags": [ - "readonly", - "module", - "fast" - ], - "module": "vectorset" - }, - "VGETATTR": { - "summary": "Retrieve the JSON attributes of elements", - "since": "8.0.0", - "group": "module", - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "element", - "type": "string", - "display_text": "element" - } - ], - "command_flags": [ - "readonly", - "module", - "fast" - ], - "module": "vectorset" - }, - "VINFO": { - "summary": "Return information about a vector set", - "since": "8.0.0", - "group": "module", - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly", - "module", - "fast" - ], - "module": "vectorset" - }, - "VISMEMBER": { - "summary": "Check if an element exists in a vector set", - "since": "8.2.0", - "group": "module", - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "element", - "type": "string", - "display_text": "element" - } - ], - "command_flags": [ - "readonly", - "module" - ], - "module": "vectorset" - }, - "VLINKS": { - "summary": "Return the neighbors of an element at each layer in the HNSW graph", - "since": "8.0.0", - "group": "module", - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "element", - "type": "string", - "display_text": "element" - }, - { - "name": "withscores", - "type": "pure-token", - "display_text": "withscores", - "token": "WITHSCORES", - "optional": true - } - ], - "command_flags": [ - "readonly", - "module", - "fast" - ], - "module": "vectorset" - }, - "VRANDMEMBER": { - "summary": "Return one or multiple random members from a vector set", - "since": "8.0.0", - "group": "module", - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "optional": true - } - ], - "command_flags": [ - "readonly", - "module" - ], - "module": "vectorset" - }, - "VRANGE": { - "summary": "Return vector set elements in a lex range", - "since": "8.4.0", - "group": "module", - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "start", - "type": "string", - "display_text": "start" - }, - { - "name": "end", - "type": "string", - "display_text": "end" - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "optional": true - } - ], - "command_flags": [ - "readonly", - "module" - ], - "module": "vectorset" - }, - "VREM": { - "summary": "Remove an element from a vector set", - "since": "8.0.0", - "group": "module", - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "element", - "type": "string", - "display_text": "element" - } - ], - "command_flags": [ - "write", - "module" - ], - "module": "vectorset" - }, - "VSETATTR": { - "summary": "Associate or remove the JSON attributes of elements", - "since": "8.0.0", - "group": "module", - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "element", - "type": "string", - "display_text": "element" - }, - { - "name": "json", - "type": "string", - "display_text": "json" - } - ], - "command_flags": [ - "write", - "module", - "fast" - ], - "module": "vectorset" - }, - "VSIM": { - "summary": "Return elements by vector similarity", - "since": "8.0.0", - "group": "module", - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "format", - "type": "oneof", - "arguments": [ - { - "name": "ele", - "type": "pure-token", - "display_text": "ele", - "token": "ELE" - }, - { - "name": "fp32", - "type": "pure-token", - "display_text": "fp32", - "token": "FP32" - }, - { - "name": "values", - "type": "pure-token", - "display_text": "values", - "token": "VALUES" - } - ] - }, - { - "name": "vector_or_element", - "type": "string", - "display_text": "vector_or_element" - }, - { - "name": "withscores", - "type": "pure-token", - "display_text": "withscores", - "token": "WITHSCORES", - "optional": true - }, - { - "name": "withattribs", - "type": "pure-token", - "display_text": "withattribs", - "token": "WITHATTRIBS", - "optional": true - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true - }, - { - "name": "max_distance", - "type": "double", - "display_text": "max_distance", - "token": "EPSILON", - "optional": true - }, - { - "name": "search-exploration-factor", - "type": "integer", - "display_text": "search-exploration-factor", - "token": "EF", - "optional": true - }, - { - "name": "expression", - "type": "string", - "display_text": "expression", - "token": "FILTER", - "optional": true - }, - { - "name": "max-filtering-effort", - "type": "integer", - "display_text": "max-filtering-effort", - "token": "FILTER-EF", - "optional": true - }, - { - "name": "truth", - "type": "pure-token", - "display_text": "truth", - "token": "TRUTH", - "optional": true - }, - { - "name": "nothread", - "type": "pure-token", - "display_text": "nothread", - "token": "NOTHREAD", - "optional": true - } - ], - "command_flags": [ - "readonly", - "module" - ], - "module": "vectorset" - }, - "WAIT": { - "summary": "Blocks until the asynchronous replication of all preceding write commands sent by the connection is completed.", - "since": "3.0.0", - "group": "generic", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@blocking", - "@connection" - ], - "arity": 3, - "arguments": [ - { - "name": "numreplicas", - "type": "integer", - "display_text": "numreplicas" - }, - { - "name": "timeout", - "type": "integer", - "display_text": "timeout" - } - ], - "command_flags": [ - "blocking" - ], - "hints": [ - "request_policy:all_shards", - "response_policy:agg_min" - ] - }, - "WAITAOF": { - "summary": "Blocks until all of the preceding write commands sent by the connection are written to the append-only file of the master and/or replicas.", - "since": "7.2.0", - "group": "generic", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@blocking", - "@connection" - ], - "arity": 4, - "arguments": [ - { - "name": "numlocal", - "type": "integer", - "display_text": "numlocal" - }, - { - "name": "numreplicas", - "type": "integer", - "display_text": "numreplicas" - }, - { - "name": "timeout", - "type": "integer", - "display_text": "timeout" - } - ], - "command_flags": [ - "blocking" - ], - "hints": [ - "request_policy:all_shards", - "response_policy:agg_min" - ] - }, - "WATCH": { - "summary": "Monitors changes to keys to determine the execution of a transaction.", - "since": "2.2.0", - "group": "transactions", - "complexity": "O(1) for every key.", - "acl_categories": [ - "@fast", - "@transaction" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 0 - } - }, - "RO": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - } - ], - "command_flags": [ - "noscript", - "loading", - "stale", - "fast", - "allow_busy" - ] - }, - "XACK": { - "summary": "Returns the number of messages that were successfully acknowledged by the consumer group member of a stream.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(1) for each message ID processed.", - "acl_categories": [ - "@write", - "@stream", - "@fast" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "group", - "type": "string", - "display_text": "group" - }, - { - "name": "id", - "type": "string", - "display_text": "id", - "multiple": true - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "XACKDEL": { - "summary": "Acknowledges and deletes one or multiple messages for a stream consumer group.", - "since": "8.2.0", - "group": "stream", - "complexity": "O(1) for each message ID processed.", - "acl_categories": [ - "@write", - "@stream", - "@fast" - ], - "arity": -6, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "group", - "type": "string", - "display_text": "group" - }, - { - "name": "condition", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "keepref", - "type": "pure-token", - "display_text": "keepref", - "token": "KEEPREF" - }, - { - "name": "delref", - "type": "pure-token", - "display_text": "delref", - "token": "DELREF" - }, - { - "name": "acked", - "type": "pure-token", - "display_text": "acked", - "token": "ACKED" - } - ] - }, - { - "name": "ids", - "type": "block", - "token": "IDS", - "arguments": [ - { - "name": "numids", - "type": "integer", - "display_text": "numids" - }, - { - "name": "id", - "type": "string", - "display_text": "id", - "multiple": true - } - ] - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "XADD": { - "summary": "Appends a new message to a stream. Creates the key if it doesn't exist.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(1) when adding a new entry, O(N) when trimming where N being the number of entries evicted.", - "history": [ - [ - "6.2.0", - "Added the `NOMKSTREAM` option, `MINID` trimming strategy and the `LIMIT` option." - ], - [ - "7.0.0", - "Added support for the `-*` explicit ID form." - ], - [ - "8.2.0", - "Added the `KEEPREF`, `DELREF` and `ACKED` options." - ] - ], - "acl_categories": [ - "@write", - "@stream", - "@fast" - ], - "arity": -5, - "key_specs": [ - { - "notes": "UPDATE instead of INSERT because of the optional trimming feature", - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "nomkstream", - "type": "pure-token", - "display_text": "nomkstream", - "token": "NOMKSTREAM", - "since": "6.2.0", - "optional": true - }, - { - "name": "condition", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "keepref", - "type": "pure-token", - "display_text": "keepref", - "token": "KEEPREF" - }, - { - "name": "delref", - "type": "pure-token", - "display_text": "delref", - "token": "DELREF" - }, - { - "name": "acked", - "type": "pure-token", - "display_text": "acked", - "token": "ACKED" - } - ] - }, - { - "name": "idmp", - "type": "oneof", - "since": "8.6.0", - "optional": true, - "arguments": [ - { - "name": "pid", - "type": "string", - "display_text": "pid", - "token": "IDMPAUTO" - }, - { - "name": "idmp", - "type": "block", - "token": "IDMP", - "arguments": [ - { - "name": "pid", - "type": "string", - "display_text": "pid" - }, - { - "name": "iid", - "type": "string", - "display_text": "iid" - } - ] - } - ] - }, - { - "name": "trim", - "type": "block", - "optional": true, - "arguments": [ - { - "name": "strategy", - "type": "oneof", - "arguments": [ - { - "name": "maxlen", - "type": "pure-token", - "display_text": "maxlen", - "token": "MAXLEN" - }, - { - "name": "minid", - "type": "pure-token", - "display_text": "minid", - "token": "MINID", - "since": "6.2.0" - } - ] - }, - { - "name": "operator", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "equal", - "type": "pure-token", - "display_text": "equal", - "token": "=" - }, - { - "name": "approximately", - "type": "pure-token", - "display_text": "approximately", - "token": "~" - } - ] - }, - { - "name": "threshold", - "type": "string", - "display_text": "threshold" - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "LIMIT", - "since": "6.2.0", - "optional": true - } - ] - }, - { - "name": "id-selector", - "type": "oneof", - "arguments": [ - { - "name": "auto-id", - "type": "pure-token", - "display_text": "auto-id", - "token": "*" - }, - { - "name": "id", - "type": "string", - "display_text": "id" - } - ] - }, - { - "name": "data", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "field", - "type": "string", - "display_text": "field" - }, - { - "name": "value", - "type": "string", - "display_text": "value" - } - ] - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "XAUTOCLAIM": { - "summary": "Changes, or acquires, ownership of messages in a consumer group, as if the messages were delivered to as consumer group member.", - "since": "6.2.0", - "group": "stream", - "complexity": "O(1) if COUNT is small.", - "history": [ - [ - "7.0.0", - "Added an element to the reply array, containing deleted entries the command cleared from the PEL" - ] - ], - "acl_categories": [ - "@write", - "@stream", - "@fast" - ], - "arity": -6, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "group", - "type": "string", - "display_text": "group" - }, - { - "name": "consumer", - "type": "string", - "display_text": "consumer" - }, - { - "name": "min-idle-time", - "type": "string", - "display_text": "min-idle-time" - }, - { - "name": "start", - "type": "string", - "display_text": "start" - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true - }, - { - "name": "justid", - "type": "pure-token", - "display_text": "justid", - "token": "JUSTID", - "optional": true - } - ], - "command_flags": [ - "write", - "fast" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "XCFGSET": { - "summary": "Sets the IDMP configuration parameters for a stream.", - "since": "8.6.0", - "group": "stream", - "complexity": "O(1)", - "acl_categories": [ - "@write", - "@stream", - "@fast" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "idmp-duration", - "type": "integer", - "display_text": "idmp-duration", - "token": "IDMP-DURATION", - "optional": true - }, - { - "name": "idmp-maxsize", - "type": "integer", - "display_text": "idmp-maxsize", - "token": "IDMP-MAXSIZE", - "optional": true - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "XCLAIM": { - "summary": "Changes, or acquires, ownership of a message in a consumer group, as if the message was delivered a consumer group member.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(log N) with N being the number of messages in the PEL of the consumer group.", - "acl_categories": [ - "@write", - "@stream", - "@fast" - ], - "arity": -6, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "group", - "type": "string", - "display_text": "group" - }, - { - "name": "consumer", - "type": "string", - "display_text": "consumer" - }, - { - "name": "min-idle-time", - "type": "string", - "display_text": "min-idle-time" - }, - { - "name": "id", - "type": "string", - "display_text": "id", - "multiple": true - }, - { - "name": "ms", - "type": "integer", - "display_text": "ms", - "token": "IDLE", - "optional": true - }, - { - "name": "unix-time-milliseconds", - "type": "unix-time", - "display_text": "unix-time-milliseconds", - "token": "TIME", - "optional": true - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "RETRYCOUNT", - "optional": true - }, - { - "name": "force", - "type": "pure-token", - "display_text": "force", - "token": "FORCE", - "optional": true - }, - { - "name": "justid", - "type": "pure-token", - "display_text": "justid", - "token": "JUSTID", - "optional": true - }, - { - "name": "lastid", - "type": "string", - "display_text": "lastid", - "token": "LASTID", - "optional": true - } - ], - "command_flags": [ - "write", - "fast" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "XDEL": { - "summary": "Returns the number of messages after removing them from a stream.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(1) for each single item to delete in the stream, regardless of the stream size.", - "acl_categories": [ - "@write", - "@stream", - "@fast" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "id", - "type": "string", - "display_text": "id", - "multiple": true - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "XDELEX": { - "summary": "Deletes one or multiple entries from the stream.", - "since": "8.2.0", - "group": "stream", - "complexity": "O(1) for each single item to delete in the stream, regardless of the stream size.", - "acl_categories": [ - "@write", - "@stream", - "@fast" - ], - "arity": -5, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "condition", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "keepref", - "type": "pure-token", - "display_text": "keepref", - "token": "KEEPREF" - }, - { - "name": "delref", - "type": "pure-token", - "display_text": "delref", - "token": "DELREF" - }, - { - "name": "acked", - "type": "pure-token", - "display_text": "acked", - "token": "ACKED" - } - ] - }, - { - "name": "ids", - "type": "block", - "token": "IDS", - "arguments": [ - { - "name": "numids", - "type": "integer", - "display_text": "numids" - }, - { - "name": "id", - "type": "string", - "display_text": "id", - "multiple": true - } - ] - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "XGROUP": { - "summary": "A container for consumer groups commands.", - "since": "5.0.0", - "group": "stream", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" - ], - "arity": -2 - }, - "XGROUP CREATE": { - "summary": "Creates a consumer group.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(1)", - "history": [ - [ - "7.0.0", - "Added the `entries_read` named argument." - ] - ], - "acl_categories": [ - "@write", - "@stream", - "@slow" - ], - "arity": -5, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "insert": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "group", - "type": "string", - "display_text": "group" - }, - { - "name": "id-selector", - "type": "oneof", - "arguments": [ - { - "name": "id", - "type": "string", - "display_text": "id" - }, - { - "name": "new-id", - "type": "pure-token", - "display_text": "new-id", - "token": "$" - } - ] - }, - { - "name": "mkstream", - "type": "pure-token", - "display_text": "mkstream", - "token": "MKSTREAM", - "optional": true - }, - { - "name": "entriesread", - "type": "integer", - "display_text": "entries-read", - "token": "ENTRIESREAD", - "optional": true - } - ], - "command_flags": [ - "write", - "denyoom" - ] - }, - "XGROUP CREATECONSUMER": { - "summary": "Creates a consumer in a consumer group.", - "since": "6.2.0", - "group": "stream", - "complexity": "O(1)", - "acl_categories": [ - "@write", - "@stream", - "@slow" - ], - "arity": 5, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "insert": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "group", - "type": "string", - "display_text": "group" - }, - { - "name": "consumer", - "type": "string", - "display_text": "consumer" - } - ], - "command_flags": [ - "write", - "denyoom" - ] - }, - "XGROUP DELCONSUMER": { - "summary": "Deletes a consumer from a consumer group.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(1)", - "acl_categories": [ - "@write", - "@stream", - "@slow" - ], - "arity": 5, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "group", - "type": "string", - "display_text": "group" - }, - { - "name": "consumer", - "type": "string", - "display_text": "consumer" - } - ], - "command_flags": [ - "write" - ] - }, - "XGROUP DESTROY": { - "summary": "Destroys a consumer group.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(N) where N is the number of entries in the group's pending entries list (PEL).", - "acl_categories": [ - "@write", - "@stream", - "@slow" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "group", - "type": "string", - "display_text": "group" - } - ], - "command_flags": [ - "write" - ] - }, - "XGROUP HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(1)", - "acl_categories": [ - "@stream", - "@slow" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "XGROUP SETID": { - "summary": "Sets the last-delivered ID of a consumer group.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(1)", - "history": [ - [ - "7.0.0", - "Added the optional `entries_read` argument." - ] - ], - "acl_categories": [ - "@write", - "@stream", - "@slow" - ], - "arity": -5, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "group", - "type": "string", - "display_text": "group" - }, - { - "name": "id-selector", - "type": "oneof", - "arguments": [ - { - "name": "id", - "type": "string", - "display_text": "id" - }, - { - "name": "new-id", - "type": "pure-token", - "display_text": "new-id", - "token": "$" - } - ] - }, - { - "name": "entriesread", - "type": "integer", - "display_text": "entries-read", - "token": "ENTRIESREAD", - "optional": true - } - ], - "command_flags": [ - "write" - ] - }, - "XIDMPRECORD": { - "summary": "An internal command for setting IDMP metadata on an existing stream message.", - "since": "8.6.2", - "group": "stream", - "complexity": "O(1)", - "acl_categories": [ - "@write", - "@stream", - "@fast" - ], - "arity": 5, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "pid", - "type": "string", - "display_text": "pid" - }, - { - "name": "iid", - "type": "string", - "display_text": "iid" - }, - { - "name": "stream-id", - "type": "string", - "display_text": "stream-id" - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "XINFO": { - "summary": "A container for stream introspection commands.", - "since": "5.0.0", - "group": "stream", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" - ], - "arity": -2 - }, - "XINFO CONSUMERS": { - "summary": "Returns a list of the consumers in a consumer group.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(1)", - "history": [ - [ - "7.2.0", - "Added the `inactive` field, and changed the meaning of `idle`." - ] - ], - "acl_categories": [ - "@read", - "@stream", - "@slow" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "group", - "type": "string", - "display_text": "group" - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "XINFO GROUPS": { - "summary": "Returns a list of the consumer groups of a stream.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(1)", - "history": [ - [ - "7.0.0", - "Added the `entries-read` and `lag` fields" - ] - ], - "acl_categories": [ - "@read", - "@stream", - "@slow" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly" - ] - }, - "XINFO HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(1)", - "acl_categories": [ - "@stream", - "@slow" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "XINFO STREAM": { - "summary": "Returns information about a stream.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(1)", - "history": [ - [ - "6.0.0", - "Added the `FULL` modifier." - ], - [ - "7.0.0", - "Added the `max-deleted-entry-id`, `entries-added`, `recorded-first-entry-id`, `entries-read` and `lag` fields" - ], - [ - "7.2.0", - "Added the `active-time` field, and changed the meaning of `seen-time`." - ], - [ - "8.6.0", - "Added the `idmp-duration`, `idmp-maxsize`, `pids-tracked`, `iids-tracked`, `iids-added` and `iids-duplicates` fields for IDMP tracking." - ], - [ - "8.8.0", - "Added the `nacked-count` field to consumer groups in `FULL` output." - ] - ], - "acl_categories": [ - "@read", - "@stream", - "@slow" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "full-block", - "type": "block", - "optional": true, - "arguments": [ - { - "name": "full", - "type": "pure-token", - "display_text": "full", - "token": "FULL" - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true - } - ] - } - ], - "command_flags": [ - "readonly" - ] - }, - "XLEN": { - "summary": "Return the number of messages in a stream.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(1)", - "acl_categories": [ - "@read", - "@stream", - "@fast" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "XNACK": { - "summary": "Releases claimed messages back to the group's PEL without acknowledging them, making them available for re-delivery.", - "since": "8.8.0", - "group": "stream", - "complexity": "O(1) for each message ID processed.", - "acl_categories": [ - "@write", - "@stream", - "@fast" - ], - "arity": -7, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "group", - "type": "string", - "display_text": "group" - }, - { - "name": "mode", - "type": "oneof", - "arguments": [ - { - "name": "silent", - "type": "pure-token", - "display_text": "silent", - "token": "SILENT" - }, - { - "name": "fail", - "type": "pure-token", - "display_text": "fail", - "token": "FAIL" - }, - { - "name": "fatal", - "type": "pure-token", - "display_text": "fatal", - "token": "FATAL" - } - ] - }, - { - "name": "ids", - "type": "block", - "token": "IDS", - "arguments": [ - { - "name": "numids", - "type": "integer", - "display_text": "numids" - }, - { - "name": "id", - "type": "string", - "display_text": "id", - "multiple": true - } - ] - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "RETRYCOUNT", - "optional": true - }, - { - "name": "force", - "type": "pure-token", - "display_text": "force", - "token": "FORCE", - "optional": true - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "XPENDING": { - "summary": "Returns the information and entries from a stream consumer group's pending entries list.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(N) with N being the number of elements returned, so asking for a small fixed number of entries per call is O(1). O(M), where M is the total number of entries scanned when used with the IDLE filter. When the command returns just the summary and the list of consumers is small, it runs in O(1) time; otherwise, an additional O(N) time for iterating every consumer.", - "history": [ - [ - "6.2.0", - "Added the `IDLE` option and exclusive range intervals." - ] - ], - "acl_categories": [ - "@read", - "@stream", - "@slow" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "group", - "type": "string", - "display_text": "group" - }, - { - "name": "filters", - "type": "block", - "optional": true, - "arguments": [ - { - "name": "min-idle-time", - "type": "integer", - "display_text": "min-idle-time", - "token": "IDLE", - "since": "6.2.0", - "optional": true - }, - { - "name": "start", - "type": "string", - "display_text": "start" - }, - { - "name": "end", - "type": "string", - "display_text": "end" - }, - { - "name": "count", - "type": "integer", - "display_text": "count" - }, - { - "name": "consumer", - "type": "string", - "display_text": "consumer", - "optional": true - } - ] - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "XRANGE": { - "summary": "Returns the messages from a stream within a range of IDs.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(N) with N being the number of elements being returned. If N is constant (e.g. always asking for the first 10 elements with COUNT), you can consider it O(1).", - "history": [ - [ - "6.2.0", - "Added exclusive ranges." - ] - ], - "acl_categories": [ - "@read", - "@stream", - "@slow" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "start", - "type": "string", - "display_text": "start" - }, - { - "name": "end", - "type": "string", - "display_text": "end" - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true - } - ], - "command_flags": [ - "readonly" - ] - }, - "XREAD": { - "summary": "Returns messages from multiple streams with IDs greater than the ones requested. Blocks until a message is available otherwise.", - "since": "5.0.0", - "group": "stream", - "acl_categories": [ - "@read", - "@stream", - "@slow", - "@blocking" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "keyword", - "spec": { - "keyword": "STREAMS", - "startfrom": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 2 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true - }, - { - "name": "milliseconds", - "type": "integer", - "display_text": "milliseconds", - "token": "BLOCK", - "optional": true - }, - { - "name": "streams", - "type": "block", - "token": "STREAMS", - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - }, - { - "name": "id", - "type": "string", - "display_text": "id", - "multiple": true - } - ] - } - ], - "command_flags": [ - "readonly", - "blocking", - "movablekeys" - ] - }, - "XREADGROUP": { - "summary": "Returns new or historical messages from a stream for a consumer in a group. Blocks until a message is available otherwise.", - "since": "5.0.0", - "group": "stream", - "complexity": "For each stream mentioned: O(M) with M being the number of elements returned. If M is constant (e.g. always asking for the first 10 elements with COUNT), you can consider it O(1). On the other side when XREADGROUP blocks, XADD will pay the O(N) time in order to serve the N clients blocked on the stream getting new data.", - "acl_categories": [ - "@write", - "@stream", - "@slow", - "@blocking" - ], - "arity": -7, - "key_specs": [ - { - "begin_search": { - "type": "keyword", - "spec": { - "keyword": "STREAMS", - "startfrom": 4 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 2 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "group-block", - "type": "block", - "token": "GROUP", - "arguments": [ - { - "name": "group", - "type": "string", - "display_text": "group" - }, - { - "name": "consumer", - "type": "string", - "display_text": "consumer" - } - ] - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true - }, - { - "name": "milliseconds", - "type": "integer", - "display_text": "milliseconds", - "token": "BLOCK", - "optional": true - }, - { - "name": "min-idle-time", - "type": "integer", - "display_text": "min-idle-time", - "token": "CLAIM", - "optional": true - }, - { - "name": "noack", - "type": "pure-token", - "display_text": "noack", - "token": "NOACK", - "optional": true - }, - { - "name": "streams", - "type": "block", - "token": "STREAMS", - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - }, - { - "name": "id", - "type": "string", - "display_text": "id", - "multiple": true - } - ] - } - ], - "command_flags": [ - "write", - "blocking", - "movablekeys" - ] - }, - "XREVRANGE": { - "summary": "Returns the messages from a stream within a range of IDs in reverse order.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(N) with N being the number of elements returned. If N is constant (e.g. always asking for the first 10 elements with COUNT), you can consider it O(1).", - "history": [ - [ - "6.2.0", - "Added exclusive ranges." - ] - ], - "acl_categories": [ - "@read", - "@stream", - "@slow" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "end", - "type": "string", - "display_text": "end" - }, - { - "name": "start", - "type": "string", - "display_text": "start" - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true - } - ], - "command_flags": [ - "readonly" - ] - }, - "XSETID": { - "summary": "An internal command for replicating stream values.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(1)", - "history": [ - [ - "7.0.0", - "Added the `entries_added` and `max_deleted_entry_id` arguments." - ] - ], - "acl_categories": [ - "@write", - "@stream", - "@fast" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "last-id", - "type": "string", - "display_text": "last-id" - }, - { - "name": "entries-added", - "type": "integer", - "display_text": "entries-added", - "token": "ENTRIESADDED", - "since": "7.0.0", - "optional": true - }, - { - "name": "max-deleted-id", - "type": "string", - "display_text": "max-deleted-id", - "token": "MAXDELETEDID", - "since": "7.0.0", - "optional": true - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "XTRIM": { - "summary": "Deletes messages from the beginning of a stream.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(N), with N being the number of evicted entries. Constant times are very small however, since entries are organized in macro nodes containing multiple entries that can be released with a single deallocation.", - "history": [ - [ - "6.2.0", - "Added the `MINID` trimming strategy and the `LIMIT` option." - ], - [ - "8.2.0", - "Added the `KEEPREF`, `DELREF` and `ACKED` options." - ] - ], - "acl_categories": [ - "@write", - "@stream", - "@slow" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "trim", - "type": "block", - "arguments": [ - { - "name": "strategy", - "type": "oneof", - "arguments": [ - { - "name": "maxlen", - "type": "pure-token", - "display_text": "maxlen", - "token": "MAXLEN" - }, - { - "name": "minid", - "type": "pure-token", - "display_text": "minid", - "token": "MINID", - "since": "6.2.0" - } - ] - }, - { - "name": "operator", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "equal", - "type": "pure-token", - "display_text": "equal", - "token": "=" - }, - { - "name": "approximately", - "type": "pure-token", - "display_text": "approximately", - "token": "~" - } - ] - }, - { - "name": "threshold", - "type": "string", - "display_text": "threshold" - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "LIMIT", - "since": "6.2.0", - "optional": true - }, - { - "name": "condition", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "keepref", - "type": "pure-token", - "display_text": "keepref", - "token": "KEEPREF" - }, - { - "name": "delref", - "type": "pure-token", - "display_text": "delref", - "token": "DELREF" - }, - { - "name": "acked", - "type": "pure-token", - "display_text": "acked", - "token": "ACKED" - } - ] - } - ] - } - ], - "command_flags": [ - "write" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "ZADD": { - "summary": "Adds one or more members to a sorted set, or updates their scores. Creates the key if it doesn't exist.", - "since": "1.2.0", - "group": "sorted-set", - "complexity": "O(log(N)) for each item added, where N is the number of elements in the sorted set.", - "history": [ - [ - "2.4.0", - "Accepts multiple elements." - ], - [ - "3.0.2", - "Added the `XX`, `NX`, `CH` and `INCR` options." - ], - [ - "6.2.0", - "Added the `GT` and `LT` options." - ] - ], - "acl_categories": [ - "@write", - "@sortedset", - "@fast" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "condition", - "type": "oneof", - "since": "3.0.2", - "optional": true, - "arguments": [ - { - "name": "nx", - "type": "pure-token", - "display_text": "nx", - "token": "NX" - }, - { - "name": "xx", - "type": "pure-token", - "display_text": "xx", - "token": "XX" - } - ] - }, - { - "name": "comparison", - "type": "oneof", - "since": "6.2.0", - "optional": true, - "arguments": [ - { - "name": "gt", - "type": "pure-token", - "display_text": "gt", - "token": "GT" - }, - { - "name": "lt", - "type": "pure-token", - "display_text": "lt", - "token": "LT" - } - ] - }, - { - "name": "change", - "type": "pure-token", - "display_text": "change", - "token": "CH", - "since": "3.0.2", - "optional": true - }, - { - "name": "increment", - "type": "pure-token", - "display_text": "increment", - "token": "INCR", - "since": "3.0.2", - "optional": true - }, - { - "name": "data", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "score", - "type": "double", - "display_text": "score" - }, - { - "name": "member", - "type": "string", - "display_text": "member" - } - ] - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "ZCARD": { - "summary": "Returns the number of members in a sorted set.", - "since": "1.2.0", - "group": "sorted-set", - "complexity": "O(1)", - "acl_categories": [ - "@read", - "@sortedset", - "@fast" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "ZCOUNT": { - "summary": "Returns the count of members in a sorted set that have scores within a range.", - "since": "2.0.0", - "group": "sorted-set", - "complexity": "O(log(N)) with N being the number of elements in the sorted set.", - "acl_categories": [ - "@read", - "@sortedset", - "@fast" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "min", - "type": "double", - "display_text": "min" - }, - { - "name": "max", - "type": "double", - "display_text": "max" - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "ZDIFF": { - "summary": "Returns the difference between multiple sorted sets.", - "since": "6.2.0", - "group": "sorted-set", - "complexity": "O(L + (N-K)log(N)) worst case where L is the total number of elements in all the sets, N is the size of the first set, and K is the size of the result set.", - "acl_categories": [ - "@read", - "@sortedset", - "@slow" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - }, - { - "name": "withscores", - "type": "pure-token", - "display_text": "withscores", - "token": "WITHSCORES", - "optional": true - } - ], - "command_flags": [ - "readonly", - "movablekeys" - ] - }, - "ZDIFFSTORE": { - "summary": "Stores the difference of multiple sorted sets in a key.", - "since": "6.2.0", - "group": "sorted-set", - "complexity": "O(L + (N-K)log(N)) worst case where L is the total number of elements in all the sets, N is the size of the first set, and K is the size of the result set.", - "acl_categories": [ - "@write", - "@sortedset", - "@slow" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, - "update": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "destination", - "type": "key", - "display_text": "destination", - "key_spec_index": 0 - }, - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 1, - "multiple": true - } - ], - "command_flags": [ - "write", - "denyoom", - "movablekeys" - ] - }, - "ZINCRBY": { - "summary": "Increments the score of a member in a sorted set.", - "since": "1.2.0", - "group": "sorted-set", - "complexity": "O(log(N)) where N is the number of elements in the sorted set.", - "acl_categories": [ - "@write", - "@sortedset", - "@fast" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "increment", - "type": "integer", - "display_text": "increment" - }, - { - "name": "member", - "type": "string", - "display_text": "member" - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "ZINTER": { - "summary": "Returns the intersect of multiple sorted sets.", - "since": "6.2.0", - "group": "sorted-set", - "complexity": "O(N*K)+O(M*log(M)) worst case with N being the smallest input sorted set, K being the number of input sorted sets and M being the number of elements in the resulting sorted set.", - "history": [ - [ - "8.8.0", - "Added `COUNT` aggregate option." - ] - ], - "acl_categories": [ - "@read", - "@sortedset", - "@slow" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - }, - { - "name": "weight", - "type": "integer", - "display_text": "weight", - "token": "WEIGHTS", - "optional": true, - "multiple": true - }, - { - "name": "aggregate", - "type": "oneof", - "token": "AGGREGATE", - "optional": true, - "arguments": [ - { - "name": "sum", - "type": "pure-token", - "display_text": "sum", - "token": "SUM" - }, - { - "name": "min", - "type": "pure-token", - "display_text": "min", - "token": "MIN" - }, - { - "name": "max", - "type": "pure-token", - "display_text": "max", - "token": "MAX" - }, - { - "name": "count", - "type": "pure-token", - "display_text": "count", - "token": "COUNT", - "since": "8.8.0" - } - ] - }, - { - "name": "withscores", - "type": "pure-token", - "display_text": "withscores", - "token": "WITHSCORES", - "optional": true - } - ], - "command_flags": [ - "readonly", - "movablekeys" - ] - }, - "ZINTERCARD": { - "summary": "Returns the number of members of the intersect of multiple sorted sets.", - "since": "7.0.0", - "group": "sorted-set", - "complexity": "O(N*K) worst case with N being the smallest input sorted set, K being the number of input sorted sets.", - "acl_categories": [ - "@read", - "@sortedset", - "@slow" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - }, - { - "name": "limit", - "type": "integer", - "display_text": "limit", - "token": "LIMIT", - "optional": true - } - ], - "command_flags": [ - "readonly", - "movablekeys" - ] - }, - "ZINTERSTORE": { - "summary": "Stores the intersect of multiple sorted sets in a key.", - "since": "2.0.0", - "group": "sorted-set", - "complexity": "O(N*K)+O(M*log(M)) worst case with N being the smallest input sorted set, K being the number of input sorted sets and M being the number of elements in the resulting sorted set.", - "history": [ - [ - "8.8.0", - "Added `COUNT` aggregate option." - ] - ], - "acl_categories": [ - "@write", - "@sortedset", - "@slow" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, - "update": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "destination", - "type": "key", - "display_text": "destination", - "key_spec_index": 0 - }, - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 1, - "multiple": true - }, - { - "name": "weight", - "type": "integer", - "display_text": "weight", - "token": "WEIGHTS", - "optional": true, - "multiple": true - }, - { - "name": "aggregate", - "type": "oneof", - "token": "AGGREGATE", - "optional": true, - "arguments": [ - { - "name": "sum", - "type": "pure-token", - "display_text": "sum", - "token": "SUM" - }, - { - "name": "min", - "type": "pure-token", - "display_text": "min", - "token": "MIN" - }, - { - "name": "max", - "type": "pure-token", - "display_text": "max", - "token": "MAX" - }, - { - "name": "count", - "type": "pure-token", - "display_text": "count", - "token": "COUNT", - "since": "8.8.0" - } - ] - } - ], - "command_flags": [ - "write", - "denyoom", - "movablekeys" - ] - }, - "ZLEXCOUNT": { - "summary": "Returns the number of members in a sorted set within a lexicographical range.", - "since": "2.8.9", - "group": "sorted-set", - "complexity": "O(log(N)) with N being the number of elements in the sorted set.", - "acl_categories": [ - "@read", - "@sortedset", - "@fast" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "min", - "type": "string", - "display_text": "min" - }, - { - "name": "max", - "type": "string", - "display_text": "max" - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "ZMPOP": { - "summary": "Returns the highest- or lowest-scoring members from one or more sorted sets after removing them. Deletes the sorted set if the last member was popped.", - "since": "7.0.0", - "group": "sorted-set", - "complexity": "O(K) + O(M*log(N)) where K is the number of provided keys, N being the number of elements in the sorted set, and M being the number of elements popped.", - "acl_categories": [ - "@write", - "@sortedset", - "@slow" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RW": true, - "access": true, - "delete": true - } - ], - "arguments": [ - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - }, - { - "name": "where", - "type": "oneof", - "arguments": [ - { - "name": "min", - "type": "pure-token", - "display_text": "min", - "token": "MIN" - }, - { - "name": "max", - "type": "pure-token", - "display_text": "max", - "token": "MAX" - } - ] - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true - } - ], - "command_flags": [ - "write", - "movablekeys" - ] - }, - "ZMSCORE": { - "summary": "Returns the score of one or more members in a sorted set.", - "since": "6.2.0", - "group": "sorted-set", - "complexity": "O(N) where N is the number of members being requested.", - "acl_categories": [ - "@read", - "@sortedset", - "@fast" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "member", - "type": "string", - "display_text": "member", - "multiple": true - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "ZPOPMAX": { - "summary": "Returns the highest-scoring members from a sorted set after removing them. Deletes the sorted set if the last member was popped.", - "since": "5.0.0", - "group": "sorted-set", - "complexity": "O(log(N)*M) with N being the number of elements in the sorted set, and M being the number of elements popped.", - "acl_categories": [ - "@write", - "@sortedset", - "@fast" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "optional": true - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "ZPOPMIN": { - "summary": "Returns the lowest-scoring members from a sorted set after removing them. Deletes the sorted set if the last member was popped.", - "since": "5.0.0", - "group": "sorted-set", - "complexity": "O(log(N)*M) with N being the number of elements in the sorted set, and M being the number of elements popped.", - "acl_categories": [ - "@write", - "@sortedset", - "@fast" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "optional": true - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "ZRANDMEMBER": { - "summary": "Returns one or more random members from a sorted set.", - "since": "6.2.0", - "group": "sorted-set", - "complexity": "O(N) where N is the number of members returned", - "acl_categories": [ - "@read", - "@sortedset", - "@slow" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "options", - "type": "block", - "optional": true, - "arguments": [ - { - "name": "count", - "type": "integer", - "display_text": "count" - }, - { - "name": "withscores", - "type": "pure-token", - "display_text": "withscores", - "token": "WITHSCORES", - "optional": true - } - ] - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "ZRANGE": { - "summary": "Returns members in a sorted set within a range of indexes.", - "since": "1.2.0", - "group": "sorted-set", - "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements returned.", - "history": [ - [ - "6.2.0", - "Added the `REV`, `BYSCORE`, `BYLEX` and `LIMIT` options." - ] - ], - "acl_categories": [ - "@read", - "@sortedset", - "@slow" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "start", - "type": "string", - "display_text": "start" - }, - { - "name": "stop", - "type": "string", - "display_text": "stop" - }, - { - "name": "sortby", - "type": "oneof", - "since": "6.2.0", - "optional": true, - "arguments": [ - { - "name": "byscore", - "type": "pure-token", - "display_text": "byscore", - "token": "BYSCORE" - }, - { - "name": "bylex", - "type": "pure-token", - "display_text": "bylex", - "token": "BYLEX" - } - ] - }, - { - "name": "rev", - "type": "pure-token", - "display_text": "rev", - "token": "REV", - "since": "6.2.0", - "optional": true - }, - { - "name": "limit", - "type": "block", - "token": "LIMIT", - "since": "6.2.0", - "optional": true, - "arguments": [ - { - "name": "offset", - "type": "integer", - "display_text": "offset" - }, - { - "name": "count", - "type": "integer", - "display_text": "count" - } - ] - }, - { - "name": "withscores", - "type": "pure-token", - "display_text": "withscores", - "token": "WITHSCORES", - "optional": true - } - ], - "command_flags": [ - "readonly" - ] - }, - "ZRANGEBYLEX": { - "summary": "Returns members in a sorted set within a lexicographical range.", - "since": "2.8.9", - "group": "sorted-set", - "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements being returned. If M is constant (e.g. always asking for the first 10 elements with LIMIT), you can consider it O(log(N)).", - "deprecated_since": "6.2.0", - "replaced_by": "`ZRANGE` with the `BYLEX` argument", - "acl_categories": [ - "@read", - "@sortedset", - "@slow" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "min", - "type": "string", - "display_text": "min" - }, - { - "name": "max", - "type": "string", - "display_text": "max" - }, - { - "name": "limit", - "type": "block", - "token": "LIMIT", - "optional": true, - "arguments": [ - { - "name": "offset", - "type": "integer", - "display_text": "offset" - }, - { - "name": "count", - "type": "integer", - "display_text": "count" - } - ] - } - ], - "command_flags": [ - "readonly" - ], - "doc_flags": [ - "deprecated" - ] - }, - "ZRANGEBYSCORE": { - "summary": "Returns members in a sorted set within a range of scores.", - "since": "1.0.5", - "group": "sorted-set", - "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements being returned. If M is constant (e.g. always asking for the first 10 elements with LIMIT), you can consider it O(log(N)).", - "deprecated_since": "6.2.0", - "replaced_by": "`ZRANGE` with the `BYSCORE` argument", - "history": [ - [ - "2.0.0", - "Added the `WITHSCORES` modifier." - ] - ], - "acl_categories": [ - "@read", - "@sortedset", - "@slow" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "min", - "type": "double", - "display_text": "min" - }, - { - "name": "max", - "type": "double", - "display_text": "max" - }, - { - "name": "withscores", - "type": "pure-token", - "display_text": "withscores", - "token": "WITHSCORES", - "since": "2.0.0", - "optional": true - }, - { - "name": "limit", - "type": "block", - "token": "LIMIT", - "optional": true, - "arguments": [ - { - "name": "offset", - "type": "integer", - "display_text": "offset" - }, - { - "name": "count", - "type": "integer", - "display_text": "count" - } - ] - } - ], - "command_flags": [ - "readonly" - ], - "doc_flags": [ - "deprecated" - ] - }, - "ZRANGESTORE": { - "summary": "Stores a range of members from sorted set in a key.", - "since": "6.2.0", - "group": "sorted-set", - "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements stored into the destination key.", - "acl_categories": [ - "@write", - "@sortedset", - "@slow" - ], - "arity": -5, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, - "update": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "dst", - "type": "key", - "display_text": "dst", - "key_spec_index": 0 - }, - { - "name": "src", - "type": "key", - "display_text": "src", - "key_spec_index": 1 - }, - { - "name": "min", - "type": "string", - "display_text": "min" - }, - { - "name": "max", - "type": "string", - "display_text": "max" - }, - { - "name": "sortby", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "byscore", - "type": "pure-token", - "display_text": "byscore", - "token": "BYSCORE" - }, - { - "name": "bylex", - "type": "pure-token", - "display_text": "bylex", - "token": "BYLEX" - } - ] - }, - { - "name": "rev", - "type": "pure-token", - "display_text": "rev", - "token": "REV", - "optional": true - }, - { - "name": "limit", - "type": "block", - "token": "LIMIT", - "optional": true, - "arguments": [ - { - "name": "offset", - "type": "integer", - "display_text": "offset" - }, - { - "name": "count", - "type": "integer", - "display_text": "count" - } - ] - } - ], - "command_flags": [ - "write", - "denyoom" - ] - }, - "ZRANK": { - "summary": "Returns the index of a member in a sorted set ordered by ascending scores.", - "since": "2.0.0", - "group": "sorted-set", - "complexity": "O(log(N))", - "history": [ - [ - "7.2.0", - "Added the optional `WITHSCORE` argument." - ] - ], - "acl_categories": [ - "@read", - "@sortedset", - "@fast" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "member", - "type": "string", - "display_text": "member" - }, - { - "name": "withscore", - "type": "pure-token", - "display_text": "withscore", - "token": "WITHSCORE", - "optional": true - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "ZREM": { - "summary": "Removes one or more members from a sorted set. Deletes the sorted set if all members were removed.", - "since": "1.2.0", - "group": "sorted-set", - "complexity": "O(M*log(N)) with N being the number of elements in the sorted set and M the number of elements to be removed.", - "history": [ - [ - "2.4.0", - "Accepts multiple elements." - ] - ], - "acl_categories": [ - "@write", - "@sortedset", - "@fast" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "member", - "type": "string", - "display_text": "member", - "multiple": true - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "ZREMRANGEBYLEX": { - "summary": "Removes members in a sorted set within a lexicographical range. Deletes the sorted set if all members were removed.", - "since": "2.8.9", - "group": "sorted-set", - "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements removed by the operation.", - "acl_categories": [ - "@write", - "@sortedset", - "@slow" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "min", - "type": "string", - "display_text": "min" - }, - { - "name": "max", - "type": "string", - "display_text": "max" - } - ], - "command_flags": [ - "write" - ] - }, - "ZREMRANGEBYRANK": { - "summary": "Removes members in a sorted set within a range of indexes. Deletes the sorted set if all members were removed.", - "since": "2.0.0", - "group": "sorted-set", - "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements removed by the operation.", - "acl_categories": [ - "@write", - "@sortedset", - "@slow" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "start", - "type": "integer", - "display_text": "start" - }, - { - "name": "stop", - "type": "integer", - "display_text": "stop" - } - ], - "command_flags": [ - "write" - ] - }, - "ZREMRANGEBYSCORE": { - "summary": "Removes members in a sorted set within a range of scores. Deletes the sorted set if all members were removed.", - "since": "1.2.0", - "group": "sorted-set", - "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements removed by the operation.", - "acl_categories": [ - "@write", - "@sortedset", - "@slow" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "min", - "type": "double", - "display_text": "min" - }, - { - "name": "max", - "type": "double", - "display_text": "max" - } - ], - "command_flags": [ - "write" - ] - }, - "ZREVRANGE": { - "summary": "Returns members in a sorted set within a range of indexes in reverse order.", - "since": "1.2.0", - "group": "sorted-set", - "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements returned.", - "deprecated_since": "6.2.0", - "replaced_by": "`ZRANGE` with the `REV` argument", - "acl_categories": [ - "@read", - "@sortedset", - "@slow" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "start", - "type": "integer", - "display_text": "start" - }, - { - "name": "stop", - "type": "integer", - "display_text": "stop" - }, - { - "name": "withscores", - "type": "pure-token", - "display_text": "withscores", - "token": "WITHSCORES", - "optional": true - } - ], - "command_flags": [ - "readonly" - ], - "doc_flags": [ - "deprecated" - ] - }, - "ZREVRANGEBYLEX": { - "summary": "Returns members in a sorted set within a lexicographical range in reverse order.", - "since": "2.8.9", - "group": "sorted-set", - "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements being returned. If M is constant (e.g. always asking for the first 10 elements with LIMIT), you can consider it O(log(N)).", - "deprecated_since": "6.2.0", - "replaced_by": "`ZRANGE` with the `REV` and `BYLEX` arguments", - "acl_categories": [ - "@read", - "@sortedset", - "@slow" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "max", - "type": "string", - "display_text": "max" - }, - { - "name": "min", - "type": "string", - "display_text": "min" - }, - { - "name": "limit", - "type": "block", - "token": "LIMIT", - "optional": true, - "arguments": [ - { - "name": "offset", - "type": "integer", - "display_text": "offset" - }, - { - "name": "count", - "type": "integer", - "display_text": "count" - } - ] - } - ], - "command_flags": [ - "readonly" - ], - "doc_flags": [ - "deprecated" - ] - }, - "ZREVRANGEBYSCORE": { - "summary": "Returns members in a sorted set within a range of scores in reverse order.", - "since": "2.2.0", - "group": "sorted-set", - "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements being returned. If M is constant (e.g. always asking for the first 10 elements with LIMIT), you can consider it O(log(N)).", - "deprecated_since": "6.2.0", - "replaced_by": "`ZRANGE` with the `REV` and `BYSCORE` arguments", - "history": [ - [ - "2.1.6", - "`min` and `max` can be exclusive." - ] - ], - "acl_categories": [ - "@read", - "@sortedset", - "@slow" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "max", - "type": "double", - "display_text": "max" - }, - { - "name": "min", - "type": "double", - "display_text": "min" - }, - { - "name": "withscores", - "type": "pure-token", - "display_text": "withscores", - "token": "WITHSCORES", - "optional": true - }, - { - "name": "limit", - "type": "block", - "token": "LIMIT", - "optional": true, - "arguments": [ - { - "name": "offset", - "type": "integer", - "display_text": "offset" - }, - { - "name": "count", - "type": "integer", - "display_text": "count" - } - ] - } - ], - "command_flags": [ - "readonly" - ], - "doc_flags": [ - "deprecated" - ] - }, - "ZREVRANK": { - "summary": "Returns the index of a member in a sorted set ordered by descending scores.", - "since": "2.0.0", - "group": "sorted-set", - "complexity": "O(log(N))", - "history": [ - [ - "7.2.0", - "Added the optional `WITHSCORE` argument." - ] - ], - "acl_categories": [ - "@read", - "@sortedset", - "@fast" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "member", - "type": "string", - "display_text": "member" - }, - { - "name": "withscore", - "type": "pure-token", - "display_text": "withscore", - "token": "WITHSCORE", - "optional": true - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "ZSCAN": { - "summary": "Iterates over members and scores of a sorted set.", - "since": "2.8.0", - "group": "sorted-set", - "complexity": "O(1) for every call. O(N) for a complete iteration, including enough command calls for the cursor to return back to 0. N is the number of elements inside the collection.", - "acl_categories": [ - "@read", - "@sortedset", - "@slow" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "cursor", - "type": "integer", - "display_text": "cursor" - }, - { - "name": "pattern", - "type": "pattern", - "display_text": "pattern", - "token": "MATCH", - "optional": true - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "ZSCORE": { - "summary": "Returns the score of a member in a sorted set.", - "since": "1.2.0", - "group": "sorted-set", - "complexity": "O(1)", - "acl_categories": [ - "@read", - "@sortedset", - "@fast" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "member", - "type": "string", - "display_text": "member" - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "ZUNION": { - "summary": "Returns the union of multiple sorted sets.", - "since": "6.2.0", - "group": "sorted-set", - "complexity": "O(N)+O(M*log(M)) with N being the sum of the sizes of the input sorted sets, and M being the number of elements in the resulting sorted set.", - "history": [ - [ - "8.8.0", - "Added `COUNT` aggregate option." - ] - ], - "acl_categories": [ - "@read", - "@sortedset", - "@slow" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - }, - { - "name": "weight", - "type": "integer", - "display_text": "weight", - "token": "WEIGHTS", - "optional": true, - "multiple": true - }, - { - "name": "aggregate", - "type": "oneof", - "token": "AGGREGATE", - "optional": true, - "arguments": [ - { - "name": "sum", - "type": "pure-token", - "display_text": "sum", - "token": "SUM" - }, - { - "name": "min", - "type": "pure-token", - "display_text": "min", - "token": "MIN" - }, - { - "name": "max", - "type": "pure-token", - "display_text": "max", - "token": "MAX" - }, - { - "name": "count", - "type": "pure-token", - "display_text": "count", - "token": "COUNT", - "since": "8.8.0" - } - ] - }, - { - "name": "withscores", - "type": "pure-token", - "display_text": "withscores", - "token": "WITHSCORES", - "optional": true - } - ], - "command_flags": [ - "readonly", - "movablekeys" - ] - }, - "ZUNIONSTORE": { - "summary": "Stores the union of multiple sorted sets in a key.", - "since": "2.0.0", - "group": "sorted-set", - "complexity": "O(N)+O(M log(M)) with N being the sum of the sizes of the input sorted sets, and M being the number of elements in the resulting sorted set.", - "history": [ - [ - "8.8.0", - "Added `COUNT` aggregate option." - ] - ], - "acl_categories": [ - "@write", - "@sortedset", - "@slow" - ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, - "update": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "destination", - "type": "key", - "display_text": "destination", - "key_spec_index": 0 - }, - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 1, - "multiple": true - }, - { - "name": "weight", - "type": "integer", - "display_text": "weight", - "token": "WEIGHTS", - "optional": true, - "multiple": true - }, - { - "name": "aggregate", - "type": "oneof", - "token": "AGGREGATE", - "optional": true, - "arguments": [ - { - "name": "sum", - "type": "pure-token", - "display_text": "sum", - "token": "SUM" - }, - { - "name": "min", - "type": "pure-token", - "display_text": "min", - "token": "MIN" - }, - { - "name": "max", - "type": "pure-token", - "display_text": "max", - "token": "MAX" - }, - { - "name": "count", - "type": "pure-token", - "display_text": "count", - "token": "COUNT", - "since": "8.8.0" - } - ] - } - ], - "command_flags": [ - "write", - "denyoom", - "movablekeys" - ] - } -} diff --git a/data/commands_core.json b/data/commands_core.json index 3fc9a464ae..d7a22b21a9 100644 --- a/data/commands_core.json +++ b/data/commands_core.json @@ -1571,9 +1571,19 @@ "allow_busy" ] }, - "BGREWRITEAOF": { - "summary": "Asynchronously rewrites the append-only file to disk.", - "since": "1.0.0", + "BACKUP": { + "summary": "A container for backup management commands.", + "since": "8.10.0", + "group": "server", + "complexity": "Depends on subcommand.", + "acl_categories": [ + "@slow" + ], + "arity": 2 + }, + "BACKUP ABORT": { + "summary": "Cancel a backup that has not been sealed yet.", + "since": "8.10.0", "group": "server", "complexity": "O(1)", "acl_categories": [ @@ -1581,63 +1591,116 @@ "@slow", "@dangerous" ], - "arity": 1, + "arity": 2, "command_flags": [ "admin", - "noscript", - "no_async_loading" + "noscript" ] }, - "BGSAVE": { - "summary": "Asynchronously saves the database(s) to disk.", - "since": "1.0.0", + "BACKUP CLEANUP": { + "summary": "Remove a sealed backup's files and return to idle.", + "since": "8.10.0", "group": "server", "complexity": "O(1)", - "history": [ - [ - "3.2.2", - "Added the `SCHEDULE` option." - ] + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" + ], + "arity": 2, + "command_flags": [ + "admin", + "noscript" + ] + }, + "BACKUP HELP": { + "summary": "Return helpful text about BACKUP command parameters.", + "since": "8.10.0", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@slow" ], + "arity": 2, + "command_flags": [ + "loading", + "stale" + ] + }, + "BACKUP LIST": { + "summary": "List the immutable backup file paths pinned so far.", + "since": "8.10.0", + "group": "server", + "complexity": "O(1)", "acl_categories": [ "@admin", "@slow", "@dangerous" ], - "arity": -1, - "arguments": [ - { - "name": "schedule", - "type": "pure-token", - "display_text": "schedule", - "token": "SCHEDULE", - "since": "3.2.2", - "optional": true - } + "arity": 2, + "command_flags": [ + "admin", + "stale" + ] + }, + "BACKUP SEAL": { + "summary": "Freeze the current backup (BASE + INCR + manifest).", + "since": "8.10.0", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" ], + "arity": 2, "command_flags": [ "admin", - "noscript", - "no_async_loading" + "noscript" ] }, - "BITCOUNT": { - "summary": "Counts the number of set bits (population counting) in a string.", - "since": "2.6.0", - "group": "bitmap", - "complexity": "O(N)", - "history": [ - [ - "7.0.0", - "Added the `BYTE|BIT` option." - ] + "BACKUP START": { + "summary": "Start a new backup into the configured 'backupdirname'.", + "since": "8.10.0", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" ], + "arity": 2, + "command_flags": [ + "admin", + "noscript" + ] + }, + "BACKUP STATUS": { + "summary": "Report the current backup state.", + "since": "8.10.0", + "group": "server", + "complexity": "O(1)", "acl_categories": [ - "@read", - "@bitmap", - "@slow" + "@admin", + "@slow", + "@dangerous" ], - "arity": -2, + "arity": 2, + "command_flags": [ + "admin", + "stale" + ] + }, + "BF.ADD": { + "summary": "Adds an item to a Bloom Filter", + "since": "1.0.0", + "group": "module", + "complexity": "O(k), where k is the number of hash functions used by the last sub-filter", + "acl_categories": [ + "@write", + "@bloom" + ], + "arity": 3, "key_specs": [ { "begin_search": { @@ -1654,8 +1717,7 @@ "limit": 0 } }, - "RO": true, - "access": true + "RW": true } ], "arguments": [ @@ -1666,61 +1728,75 @@ "key_spec_index": 0 }, { - "name": "range", - "type": "block", - "optional": true, - "arguments": [ - { - "name": "start", - "type": "integer", - "display_text": "start" - }, - { - "name": "end", - "type": "integer", - "display_text": "end" - }, - { - "name": "unit", - "type": "oneof", - "since": "7.0.0", - "optional": true, - "arguments": [ - { - "name": "byte", - "type": "pure-token", - "display_text": "byte", - "token": "BYTE" - }, - { - "name": "bit", - "type": "pure-token", - "display_text": "bit", - "token": "BIT" - } - ] + "name": "item", + "type": "string", + "display_text": "item" + } + ], + "command_flags": [ + "write", + "denyoom", + "module" + ], + "module": "bf" + }, + "BF.CARD": { + "summary": "Returns the cardinality of a Bloom filter", + "since": "2.4.4", + "group": "module", + "complexity": "O(1)", + "acl_categories": [ + "@read", + "@fast", + "@bloom" + ], + "arity": 2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 } - ] + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 } ], "command_flags": [ - "readonly" - ] + "readonly", + "module", + "fast" + ], + "module": "bf" }, - "BITFIELD": { - "summary": "Performs arbitrary bitfield integer operations on strings.", - "since": "3.2.0", - "group": "bitmap", - "complexity": "O(1) for each subcommand specified", + "BF.DEBUG": { + "summary": "Returns internal debug information about a Bloom Filter", + "since": "1.0.0", + "group": "module", + "complexity": "O(n), where n is the number of sub-filters", "acl_categories": [ - "@write", - "@bitmap", - "@slow" + "@read", + "@bloom" ], - "arity": -2, + "arity": 2, "key_specs": [ { - "notes": "This command allows both access and modification of the key", "begin_search": { "type": "index", "spec": { @@ -1735,10 +1811,54 @@ "limit": 0 } }, - "RW": true, - "access": true, - "update": true, - "variable_flags": true + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + } + ], + "command_flags": [ + "readonly", + "module", + "fast" + ], + "hints": [ + "dont_cache" + ], + "module": "bf" + }, + "BF.EXISTS": { + "summary": "Checks whether an item exists in a Bloom Filter", + "since": "1.0.0", + "group": "module", + "complexity": "O(k), where k is the number of hash functions used by the last sub-filter", + "acl_categories": [ + "@read", + "@bloom" + ], + "arity": 3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true } ], "arguments": [ @@ -1749,127 +1869,27 @@ "key_spec_index": 0 }, { - "name": "operation", - "type": "oneof", - "optional": true, - "multiple": true, - "arguments": [ - { - "name": "get-block", - "type": "block", - "token": "GET", - "arguments": [ - { - "name": "encoding", - "type": "string", - "display_text": "encoding" - }, - { - "name": "offset", - "type": "integer", - "display_text": "offset" - } - ] - }, - { - "name": "write", - "type": "block", - "arguments": [ - { - "name": "overflow-block", - "type": "oneof", - "token": "OVERFLOW", - "optional": true, - "arguments": [ - { - "name": "wrap", - "type": "pure-token", - "display_text": "wrap", - "token": "WRAP" - }, - { - "name": "sat", - "type": "pure-token", - "display_text": "sat", - "token": "SAT" - }, - { - "name": "fail", - "type": "pure-token", - "display_text": "fail", - "token": "FAIL" - } - ] - }, - { - "name": "write-operation", - "type": "oneof", - "arguments": [ - { - "name": "set-block", - "type": "block", - "token": "SET", - "arguments": [ - { - "name": "encoding", - "type": "string", - "display_text": "encoding" - }, - { - "name": "offset", - "type": "integer", - "display_text": "offset" - }, - { - "name": "value", - "type": "integer", - "display_text": "value" - } - ] - }, - { - "name": "incrby-block", - "type": "block", - "token": "INCRBY", - "arguments": [ - { - "name": "encoding", - "type": "string", - "display_text": "encoding" - }, - { - "name": "offset", - "type": "integer", - "display_text": "offset" - }, - { - "name": "increment", - "type": "integer", - "display_text": "increment" - } - ] - } - ] - } - ] - } - ] + "name": "item", + "type": "string", + "display_text": "item" } ], "command_flags": [ - "write", - "denyoom" - ] + "readonly", + "module", + "fast" + ], + "module": "bf" }, - "BITFIELD_RO": { - "summary": "Performs arbitrary read-only bitfield integer operations on strings.", - "since": "6.0.0", - "group": "bitmap", - "complexity": "O(1) for each subcommand specified", + "BF.INFO": { + "summary": "Returns information about a Bloom Filter", + "since": "1.0.0", + "group": "module", + "complexity": "O(1)", "acl_categories": [ "@read", - "@bitmap", - "@fast" + "@fast", + "@bloom" ], "arity": -2, "key_specs": [ @@ -1888,8 +1908,7 @@ "limit": 0 } }, - "RO": true, - "access": true + "RO": true } ], "arguments": [ @@ -1900,40 +1919,61 @@ "key_spec_index": 0 }, { - "name": "get-block", - "type": "block", - "token": "GET", + "name": "single_value", + "type": "oneof", "optional": true, - "multiple": true, - "multiple_token": true, "arguments": [ { - "name": "encoding", - "type": "string", - "display_text": "encoding" + "name": "capcaity", + "type": "pure-token", + "display_text": "capcaity", + "token": "CAPACITY" }, { - "name": "offset", - "type": "integer", - "display_text": "offset" + "name": "SIZE", + "type": "pure-token", + "display_text": "SIZE", + "token": "SIZE" + }, + { + "name": "FILTERS", + "type": "pure-token", + "display_text": "FILTERS", + "token": "FILTERS" + }, + { + "name": "ITEMS", + "type": "pure-token", + "display_text": "ITEMS", + "token": "ITEMS" + }, + { + "name": "EXPANSION", + "type": "pure-token", + "display_text": "EXPANSION", + "token": "EXPANSION" } ] } ], "command_flags": [ "readonly", + "module", "fast" - ] + ], + "hints": [ + "dont_cache" + ], + "module": "bf" }, - "BITOP": { - "summary": "Performs bitwise operations on multiple strings, and stores the result.", - "since": "2.6.0", - "group": "bitmap", - "complexity": "O(N)", + "BF.INSERT": { + "summary": "Adds one or more items to a Bloom Filter. A filter will be created if it does not exist", + "since": "1.0.0", + "group": "module", + "complexity": "O(k * n), where k is the number of hash functions and n is the number of items", "acl_categories": [ "@write", - "@bitmap", - "@slow" + "@bloom" ], "arity": -4, "key_specs": [ @@ -1941,7 +1981,7 @@ "begin_search": { "type": "index", "spec": { - "index": 2 + "index": 1 } }, "find_keys": { @@ -1952,117 +1992,151 @@ "limit": 0 } }, - "OW": true, - "update": true + "RW": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "capacity", + "type": "block", + "token": "CAPACITY", + "optional": true, + "arguments": [ + { + "name": "capacity", + "type": "integer", + "display_text": "capacity" + } + ] + }, + { + "name": "error", + "type": "block", + "token": "ERROR", + "optional": true, + "arguments": [ + { + "name": "error", + "type": "double", + "display_text": "error" + } + ] + }, + { + "name": "expansion", + "type": "block", + "token": "EXPANSION", + "optional": true, + "arguments": [ + { + "name": "expansion", + "type": "integer", + "display_text": "expansion" + } + ] + }, + { + "name": "nocreate", + "type": "pure-token", + "display_text": "nocreate", + "token": "NOCREATE", + "optional": true }, + { + "name": "nonscaling", + "type": "pure-token", + "display_text": "nonscaling", + "token": "NONSCALING", + "optional": true + }, + { + "name": "items", + "type": "pure-token", + "display_text": "items", + "token": "ITEMS" + }, + { + "name": "item", + "type": "string", + "display_text": "item", + "multiple": true + } + ], + "command_flags": [ + "write", + "denyoom", + "module" + ], + "module": "bf" + }, + "BF.LOADCHUNK": { + "summary": "Restores a filter previously saved using SCANDUMP", + "since": "1.0.0", + "group": "module", + "complexity": "O(n), where n is the capacity", + "acl_categories": [ + "@write", + "@bloom" + ], + "arity": 4, + "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 3 + "index": 1 } }, "find_keys": { "type": "range", "spec": { - "lastkey": -1, + "lastkey": 0, "keystep": 1, "limit": 0 } }, - "RO": true, - "access": true + "RW": true } ], "arguments": [ { - "name": "operation", - "type": "oneof", - "arguments": [ - { - "name": "and", - "type": "pure-token", - "display_text": "and", - "token": "AND" - }, - { - "name": "or", - "type": "pure-token", - "display_text": "or", - "token": "OR" - }, - { - "name": "xor", - "type": "pure-token", - "display_text": "xor", - "token": "XOR" - }, - { - "name": "not", - "type": "pure-token", - "display_text": "not", - "token": "NOT" - }, - { - "name": "diff", - "type": "pure-token", - "display_text": "diff", - "token": "DIFF" - }, - { - "name": "diff1", - "type": "pure-token", - "display_text": "diff1", - "token": "DIFF1" - }, - { - "name": "andor", - "type": "pure-token", - "display_text": "andor", - "token": "ANDOR" - }, - { - "name": "one", - "type": "pure-token", - "display_text": "one", - "token": "ONE" - } - ] - }, - { - "name": "destkey", + "name": "key", "type": "key", - "display_text": "destkey", + "display_text": "key", "key_spec_index": 0 }, { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 1, - "multiple": true + "name": "iterator", + "type": "integer", + "display_text": "iterator" + }, + { + "name": "data", + "type": "string", + "display_text": "data" } ], "command_flags": [ "write", - "denyoom" - ] - }, - "BITPOS": { - "summary": "Finds the first set (1) or clear (0) bit in a string.", - "since": "2.8.7", - "group": "bitmap", - "complexity": "O(N)", - "history": [ - [ - "7.0.0", - "Added the `BYTE|BIT` option." - ] + "denyoom", + "module" ], + "module": "bf" + }, + "BF.MADD": { + "summary": "Adds one or more items to a Bloom Filter. A filter will be created if it does not exist", + "since": "1.0.0", + "group": "module", + "complexity": "O(k * n), where k is the number of hash functions and n is the number of items", "acl_categories": [ - "@read", - "@bitmap", - "@slow" + "@write", + "@bloom" ], "arity": -3, "key_specs": [ @@ -2081,8 +2155,7 @@ "limit": 0 } }, - "RO": true, - "access": true + "RW": true } ], "arguments": [ @@ -2093,71 +2166,29 @@ "key_spec_index": 0 }, { - "name": "bit", - "type": "integer", - "display_text": "bit" - }, - { - "name": "range", - "type": "block", - "optional": true, - "arguments": [ - { - "name": "start", - "type": "integer", - "display_text": "start" - }, - { - "name": "end-unit-block", - "type": "block", - "optional": true, - "arguments": [ - { - "name": "end", - "type": "integer", - "display_text": "end" - }, - { - "name": "unit", - "type": "oneof", - "since": "7.0.0", - "optional": true, - "arguments": [ - { - "name": "byte", - "type": "pure-token", - "display_text": "byte", - "token": "BYTE" - }, - { - "name": "bit", - "type": "pure-token", - "display_text": "bit", - "token": "BIT" - } - ] - } - ] - } - ] + "name": "item", + "type": "string", + "display_text": "item", + "multiple": true } ], "command_flags": [ - "readonly" - ] + "write", + "denyoom", + "module" + ], + "module": "bf" }, - "BLMOVE": { - "summary": "Pops an element from a list, pushes it to another list and returns it. Blocks until an element is available otherwise. Deletes the list if the last element was moved.", - "since": "6.2.0", - "group": "list", - "complexity": "O(1)", + "BF.MEXISTS": { + "summary": "Checks whether one or more items exist in a Bloom Filter", + "since": "1.0.0", + "group": "module", + "complexity": "O(k * n), where k is the number of hash functions and n is the number of items", "acl_categories": [ - "@write", - "@list", - "@slow", - "@blocking" + "@read", + "@bloom" ], - "arity": 6, + "arity": -3, "key_specs": [ { "begin_search": { @@ -2174,15 +2205,47 @@ "limit": 0 } }, - "RW": true, - "access": true, - "delete": true + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 }, + { + "name": "item", + "type": "string", + "display_text": "item", + "multiple": true + } + ], + "command_flags": [ + "readonly", + "module", + "fast" + ], + "module": "bf" + }, + "BF.RESERVE": { + "summary": "Creates a new Bloom Filter", + "since": "1.0.0", + "group": "module", + "complexity": "O(1)", + "acl_categories": [ + "@write", + "@fast", + "@bloom" + ], + "arity": -4, + "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 2 + "index": 1 } }, "find_keys": { @@ -2193,230 +2256,173 @@ "limit": 0 } }, - "RW": true, - "insert": true + "RW": true } ], "arguments": [ { - "name": "source", + "name": "key", "type": "key", - "display_text": "source", + "display_text": "key", "key_spec_index": 0 }, { - "name": "destination", - "type": "key", - "display_text": "destination", - "key_spec_index": 1 + "name": "error_rate", + "type": "double", + "display_text": "error_rate" }, { - "name": "wherefrom", - "type": "oneof", - "arguments": [ - { - "name": "left", - "type": "pure-token", - "display_text": "left", - "token": "LEFT" - }, - { - "name": "right", - "type": "pure-token", - "display_text": "right", - "token": "RIGHT" - } - ] + "name": "capacity", + "type": "integer", + "display_text": "capacity" }, { - "name": "whereto", - "type": "oneof", + "name": "expansion", + "type": "block", + "token": "EXPANSION", + "optional": true, "arguments": [ { - "name": "left", - "type": "pure-token", - "display_text": "left", - "token": "LEFT" - }, - { - "name": "right", - "type": "pure-token", - "display_text": "right", - "token": "RIGHT" + "name": "expansion", + "type": "integer", + "display_text": "expansion" } ] }, { - "name": "timeout", - "type": "double", - "display_text": "timeout" + "name": "nonscaling", + "type": "pure-token", + "display_text": "nonscaling", + "token": "NONSCALING", + "optional": true } ], "command_flags": [ "write", "denyoom", - "blocking" - ] + "module" + ], + "module": "bf" }, - "BLMPOP": { - "summary": "Pops the first element from one of multiple lists. Blocks until an element is available otherwise. Deletes the list if the last element was popped.", - "since": "7.0.0", - "group": "list", - "complexity": "O(N+M) where N is the number of provided keys and M is the number of elements returned.", + "BF.SCANDUMP": { + "summary": "Begins an incremental save of the bloom filter", + "since": "1.0.0", + "group": "module", + "complexity": "O(n), where n is the capacity", "acl_categories": [ - "@write", - "@list", - "@slow", - "@blocking" + "@read", + "@bloom" ], - "arity": -5, + "arity": 3, "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 2 + "index": 1 } }, "find_keys": { - "type": "keynum", + "type": "range", "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 + "lastkey": 0, + "keystep": 1, + "limit": 0 } }, - "RW": true, - "access": true, - "delete": true + "RW": true } ], "arguments": [ - { - "name": "timeout", - "type": "double", - "display_text": "timeout" - }, - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, { "name": "key", "type": "key", "display_text": "key", - "key_spec_index": 0, - "multiple": true - }, - { - "name": "where", - "type": "oneof", - "arguments": [ - { - "name": "left", - "type": "pure-token", - "display_text": "left", - "token": "LEFT" - }, - { - "name": "right", - "type": "pure-token", - "display_text": "right", - "token": "RIGHT" - } - ] + "key_spec_index": 0 }, { - "name": "count", + "name": "iterator", "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true + "display_text": "iterator" } ], "command_flags": [ - "write", - "blocking", - "movablekeys" + "readonly", + "module", + "fast" + ], + "hints": [ + "dont_cache" + ], + "module": "bf" + }, + "BGREWRITEAOF": { + "summary": "Asynchronously rewrites the append-only file to disk.", + "since": "1.0.0", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" + ], + "arity": 1, + "command_flags": [ + "admin", + "noscript", + "no_async_loading" ] }, - "BLPOP": { - "summary": "Removes and returns the first element in a list. Blocks until an element is available otherwise. Deletes the list if the last element was popped.", - "since": "2.0.0", - "group": "list", - "complexity": "O(N) where N is the number of provided keys.", + "BGSAVE": { + "summary": "Asynchronously saves the database(s) to disk.", + "since": "1.0.0", + "group": "server", + "complexity": "O(1)", "history": [ [ - "6.0.0", - "`timeout` is interpreted as a double instead of an integer." + "3.2.2", + "Added the `SCHEDULE` option." ] ], "acl_categories": [ - "@write", - "@list", + "@admin", "@slow", - "@blocking" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -2, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "delete": true - } + "@dangerous" ], + "arity": -1, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - }, - { - "name": "timeout", - "type": "double", - "display_text": "timeout" + "name": "schedule", + "type": "pure-token", + "display_text": "schedule", + "token": "SCHEDULE", + "since": "3.2.2", + "optional": true } ], "command_flags": [ - "write", - "blocking" + "admin", + "noscript", + "no_async_loading" ] }, - "BRPOP": { - "summary": "Removes and returns the last element in a list. Blocks until an element is available otherwise. Deletes the list if the last element was popped.", - "since": "2.0.0", - "group": "list", - "complexity": "O(N) where N is the number of provided keys.", + "BITCOUNT": { + "summary": "Counts the number of set bits (population counting) in a string.", + "since": "2.6.0", + "group": "bitmap", + "complexity": "O(N)", "history": [ [ - "6.0.0", - "`timeout` is interpreted as a double instead of an integer." + "7.0.0", + "Added the `BYTE|BIT` option." ] ], "acl_categories": [ - "@write", - "@list", - "@slow", - "@blocking" + "@read", + "@bitmap", + "@slow" ], - "arity": -3, + "arity": -2, "key_specs": [ { "begin_search": { @@ -2428,14 +2434,13 @@ "find_keys": { "type": "range", "spec": { - "lastkey": -2, + "lastkey": 0, "keystep": 1, "limit": 0 } }, - "RW": true, - "access": true, - "delete": true + "RO": true, + "access": true } ], "arguments": [ @@ -2443,42 +2448,64 @@ "name": "key", "type": "key", "display_text": "key", - "key_spec_index": 0, - "multiple": true + "key_spec_index": 0 }, { - "name": "timeout", - "type": "double", - "display_text": "timeout" + "name": "range", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "start", + "type": "integer", + "display_text": "start" + }, + { + "name": "end", + "type": "integer", + "display_text": "end" + }, + { + "name": "unit", + "type": "oneof", + "since": "7.0.0", + "optional": true, + "arguments": [ + { + "name": "byte", + "type": "pure-token", + "display_text": "byte", + "token": "BYTE" + }, + { + "name": "bit", + "type": "pure-token", + "display_text": "bit", + "token": "BIT" + } + ] + } + ] } ], "command_flags": [ - "write", - "blocking" + "readonly" ] }, - "BRPOPLPUSH": { - "summary": "Pops an element from a list, pushes it to another list and returns it. Block until an element is available otherwise. Deletes the list if the last element was popped.", - "since": "2.2.0", - "group": "list", - "complexity": "O(1)", - "deprecated_since": "6.2.0", - "replaced_by": "`BLMOVE` with the `RIGHT` and `LEFT` arguments", - "history": [ - [ - "6.0.0", - "`timeout` is interpreted as a double instead of an integer." - ] - ], + "BITFIELD": { + "summary": "Performs arbitrary bitfield integer operations on strings.", + "since": "3.2.0", + "group": "bitmap", + "complexity": "O(1) for each subcommand specified", "acl_categories": [ "@write", - "@list", - "@slow", - "@blocking" + "@bitmap", + "@slow" ], - "arity": 4, + "arity": -2, "key_specs": [ { + "notes": "This command allows both access and modification of the key", "begin_search": { "type": "index", "spec": { @@ -2495,213 +2522,332 @@ }, "RW": true, "access": true, - "delete": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "insert": true + "update": true, + "variable_flags": true } ], "arguments": [ { - "name": "source", + "name": "key", "type": "key", - "display_text": "source", + "display_text": "key", "key_spec_index": 0 }, { - "name": "destination", - "type": "key", - "display_text": "destination", - "key_spec_index": 1 - }, - { - "name": "timeout", - "type": "double", - "display_text": "timeout" + "name": "operation", + "type": "oneof", + "optional": true, + "multiple": true, + "arguments": [ + { + "name": "get-block", + "type": "block", + "token": "GET", + "arguments": [ + { + "name": "encoding", + "type": "string", + "display_text": "encoding" + }, + { + "name": "offset", + "type": "integer", + "display_text": "offset" + } + ] + }, + { + "name": "write", + "type": "block", + "arguments": [ + { + "name": "overflow-block", + "type": "oneof", + "token": "OVERFLOW", + "optional": true, + "arguments": [ + { + "name": "wrap", + "type": "pure-token", + "display_text": "wrap", + "token": "WRAP" + }, + { + "name": "sat", + "type": "pure-token", + "display_text": "sat", + "token": "SAT" + }, + { + "name": "fail", + "type": "pure-token", + "display_text": "fail", + "token": "FAIL" + } + ] + }, + { + "name": "write-operation", + "type": "oneof", + "arguments": [ + { + "name": "set-block", + "type": "block", + "token": "SET", + "arguments": [ + { + "name": "encoding", + "type": "string", + "display_text": "encoding" + }, + { + "name": "offset", + "type": "integer", + "display_text": "offset" + }, + { + "name": "value", + "type": "integer", + "display_text": "value" + } + ] + }, + { + "name": "incrby-block", + "type": "block", + "token": "INCRBY", + "arguments": [ + { + "name": "encoding", + "type": "string", + "display_text": "encoding" + }, + { + "name": "offset", + "type": "integer", + "display_text": "offset" + }, + { + "name": "increment", + "type": "integer", + "display_text": "increment" + } + ] + } + ] + } + ] + } + ] } ], "command_flags": [ "write", - "denyoom", - "blocking" - ], - "doc_flags": [ - "deprecated" + "denyoom" ] }, - "BZMPOP": { - "summary": "Removes and returns a member by score from one or more sorted sets. Blocks until a member is available otherwise. Deletes the sorted set if the last element was popped.", - "since": "7.0.0", - "group": "sorted-set", - "complexity": "O(K) + O(M*log(N)) where K is the number of provided keys, N being the number of elements in the sorted set, and M being the number of elements popped.", + "BITFIELD_RO": { + "summary": "Performs arbitrary read-only bitfield integer operations on strings.", + "since": "6.0.0", + "group": "bitmap", + "complexity": "O(1) for each subcommand specified", "acl_categories": [ - "@write", - "@sortedset", - "@slow", - "@blocking" + "@read", + "@bitmap", + "@fast" ], - "arity": -5, + "arity": -2, "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 2 + "index": 1 } }, "find_keys": { - "type": "keynum", + "type": "range", "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 + "lastkey": 0, + "keystep": 1, + "limit": 0 } }, - "RW": true, - "access": true, - "delete": true + "RO": true, + "access": true } ], "arguments": [ - { - "name": "timeout", - "type": "double", - "display_text": "timeout" - }, - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, { "name": "key", "type": "key", "display_text": "key", - "key_spec_index": 0, - "multiple": true + "key_spec_index": 0 }, { - "name": "where", - "type": "oneof", + "name": "get-block", + "type": "block", + "token": "GET", + "optional": true, + "multiple": true, + "multiple_token": true, "arguments": [ { - "name": "min", - "type": "pure-token", - "display_text": "min", - "token": "MIN" + "name": "encoding", + "type": "string", + "display_text": "encoding" }, { - "name": "max", - "type": "pure-token", - "display_text": "max", - "token": "MAX" + "name": "offset", + "type": "integer", + "display_text": "offset" } ] - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true } ], "command_flags": [ - "write", - "blocking", - "movablekeys" + "readonly", + "fast" ] }, - "BZPOPMAX": { - "summary": "Removes and returns the member with the highest score from one or more sorted sets. Blocks until a member available otherwise. Deletes the sorted set if the last element was popped.", - "since": "5.0.0", - "group": "sorted-set", - "complexity": "O(log(N)) with N being the number of elements in the sorted set.", - "history": [ - [ - "6.0.0", - "`timeout` is interpreted as a double instead of an integer." - ] - ], + "BITOP": { + "summary": "Performs bitwise operations on multiple strings, and stores the result.", + "since": "2.6.0", + "group": "bitmap", + "complexity": "O(N)", "acl_categories": [ "@write", - "@sortedset", - "@fast", - "@blocking" + "@bitmap", + "@slow" ], - "arity": -3, + "arity": -4, "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 1 + "index": 2 } }, "find_keys": { "type": "range", "spec": { - "lastkey": -2, + "lastkey": 0, "keystep": 1, "limit": 0 } }, - "RW": true, - "access": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true + "OW": true, + "update": true }, { - "name": "timeout", - "type": "double", - "display_text": "timeout" + "begin_search": { + "type": "index", + "spec": { + "index": 3 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": -1, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true } ], - "command_flags": [ - "write", - "blocking", - "fast" + "arguments": [ + { + "name": "operation", + "type": "oneof", + "arguments": [ + { + "name": "and", + "type": "pure-token", + "display_text": "and", + "token": "AND" + }, + { + "name": "or", + "type": "pure-token", + "display_text": "or", + "token": "OR" + }, + { + "name": "xor", + "type": "pure-token", + "display_text": "xor", + "token": "XOR" + }, + { + "name": "not", + "type": "pure-token", + "display_text": "not", + "token": "NOT" + }, + { + "name": "diff", + "type": "pure-token", + "display_text": "diff", + "token": "DIFF" + }, + { + "name": "diff1", + "type": "pure-token", + "display_text": "diff1", + "token": "DIFF1" + }, + { + "name": "andor", + "type": "pure-token", + "display_text": "andor", + "token": "ANDOR" + }, + { + "name": "one", + "type": "pure-token", + "display_text": "one", + "token": "ONE" + } + ] + }, + { + "name": "destkey", + "type": "key", + "display_text": "destkey", + "key_spec_index": 0 + }, + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 1, + "multiple": true + } + ], + "command_flags": [ + "write", + "denyoom" ] }, - "BZPOPMIN": { - "summary": "Removes and returns the member with the lowest score from one or more sorted sets. Blocks until a member is available otherwise. Deletes the sorted set if the last element was popped.", - "since": "5.0.0", - "group": "sorted-set", - "complexity": "O(log(N)) with N being the number of elements in the sorted set.", + "BITPOS": { + "summary": "Finds the first set (1) or clear (0) bit in a string.", + "since": "2.8.7", + "group": "bitmap", + "complexity": "O(N)", "history": [ [ - "6.0.0", - "`timeout` is interpreted as a double instead of an integer." + "7.0.0", + "Added the `BYTE|BIT` option." ] ], "acl_categories": [ - "@write", - "@sortedset", - "@fast", - "@blocking" + "@read", + "@bitmap", + "@slow" ], "arity": -3, "key_specs": [ @@ -2715,14 +2861,13 @@ "find_keys": { "type": "range", "spec": { - "lastkey": -2, + "lastkey": 0, "keystep": 1, "limit": 0 } }, - "RW": true, - "access": true, - "delete": true + "RO": true, + "access": true } ], "arguments": [ @@ -2730,301 +2875,317 @@ "name": "key", "type": "key", "display_text": "key", - "key_spec_index": 0, - "multiple": true + "key_spec_index": 0 }, { - "name": "timeout", - "type": "double", - "display_text": "timeout" + "name": "bit", + "type": "integer", + "display_text": "bit" + }, + { + "name": "range", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "start", + "type": "integer", + "display_text": "start" + }, + { + "name": "end-unit-block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "end", + "type": "integer", + "display_text": "end" + }, + { + "name": "unit", + "type": "oneof", + "since": "7.0.0", + "optional": true, + "arguments": [ + { + "name": "byte", + "type": "pure-token", + "display_text": "byte", + "token": "BYTE" + }, + { + "name": "bit", + "type": "pure-token", + "display_text": "bit", + "token": "BIT" + } + ] + } + ] + } + ] } ], "command_flags": [ - "write", - "blocking", - "fast" + "readonly" ] }, - "CLIENT": { - "summary": "A container for client connection commands.", - "since": "2.4.0", - "group": "connection", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" - ], - "arity": -2 - }, - "CLIENT CACHING": { - "summary": "Instructs the server whether to track the keys in the next request.", - "since": "6.0.0", - "group": "connection", + "BLMOVE": { + "summary": "Pops an element from a list, pushes it to another list and returns it. Blocks until an element is available otherwise. Deletes the list if the last element was moved.", + "since": "6.2.0", + "group": "list", "complexity": "O(1)", "acl_categories": [ + "@write", + "@list", "@slow", - "@connection" + "@blocking" + ], + "arity": 6, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "delete": true + }, + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "insert": true + } ], - "arity": 3, "arguments": [ { - "name": "mode", + "name": "source", + "type": "key", + "display_text": "source", + "key_spec_index": 0 + }, + { + "name": "destination", + "type": "key", + "display_text": "destination", + "key_spec_index": 1 + }, + { + "name": "wherefrom", "type": "oneof", "arguments": [ { - "name": "yes", + "name": "left", "type": "pure-token", - "display_text": "yes", - "token": "YES" + "display_text": "left", + "token": "LEFT" }, { - "name": "no", + "name": "right", "type": "pure-token", - "display_text": "no", - "token": "NO" + "display_text": "right", + "token": "RIGHT" } ] - } - ], - "command_flags": [ - "noscript", - "loading", - "stale" - ] - }, - "CLIENT GETNAME": { - "summary": "Returns the name of the connection.", - "since": "2.6.9", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": 2, - "command_flags": [ - "noscript", - "loading", - "stale" - ] - }, - "CLIENT GETREDIR": { - "summary": "Returns the client ID to which the connection's tracking notifications are redirected.", - "since": "6.0.0", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": 2, - "command_flags": [ - "noscript", - "loading", - "stale" - ] - }, - "CLIENT HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "5.0.0", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "CLIENT ID": { - "summary": "Returns the unique client ID of the connection.", - "since": "5.0.0", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@connection" + }, + { + "name": "whereto", + "type": "oneof", + "arguments": [ + { + "name": "left", + "type": "pure-token", + "display_text": "left", + "token": "LEFT" + }, + { + "name": "right", + "type": "pure-token", + "display_text": "right", + "token": "RIGHT" + } + ] + }, + { + "name": "timeout", + "type": "double", + "display_text": "timeout" + } ], - "arity": 2, "command_flags": [ - "noscript", - "loading", - "stale" + "write", + "denyoom", + "blocking" ] }, - "CLIENT INFO": { - "summary": "Returns information about the connection.", - "since": "6.2.0", - "group": "connection", - "complexity": "O(1)", + "BLMOVEM": { + "summary": "Moves up to (or exactly) a number of elements from one list to another and returns them. Blocks until the elements are available otherwise. Deletes the source list if it becomes empty.", + "since": "8.10.0", + "group": "list", + "complexity": "O(N) where N is the number of elements moved.", "acl_categories": [ + "@write", + "@list", "@slow", - "@connection" - ], - "arity": 2, - "command_flags": [ - "noscript", - "loading", - "stale" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "CLIENT KILL": { - "summary": "Terminates open connections.", - "since": "2.4.0", - "group": "connection", - "complexity": "O(N) where N is the number of client connections", - "history": [ - [ - "2.8.12", - "Added new filter format." - ], - [ - "2.8.12", - "`ID` option." - ], - [ - "3.2.0", - "Added `master` type in for `TYPE` option." - ], - [ - "5.0.0", - "Replaced `slave` `TYPE` with `replica`. `slave` still supported for backward compatibility." - ], - [ - "6.2.0", - "`LADDR` option." - ], - [ - "7.4.0", - "`MAXAGE` option." - ] + "@blocking" ], - "acl_categories": [ - "@admin", - "@slow", - "@dangerous", - "@connection" + "arity": -6, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "delete": true + }, + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "insert": true + } ], - "arity": -3, "arguments": [ { - "name": "filter", + "name": "source", + "type": "key", + "display_text": "source", + "key_spec_index": 0 + }, + { + "name": "destination", + "type": "key", + "display_text": "destination", + "key_spec_index": 1 + }, + { + "name": "wherefrom", "type": "oneof", "arguments": [ { - "name": "old-format", - "type": "string", - "display_text": "ip:port", - "deprecated_since": "2.8.12" + "name": "left", + "type": "pure-token", + "display_text": "left", + "token": "LEFT" }, { - "name": "new-format", + "name": "right", + "type": "pure-token", + "display_text": "right", + "token": "RIGHT" + } + ] + }, + { + "name": "whereto", + "type": "oneof", + "arguments": [ + { + "name": "left", + "type": "pure-token", + "display_text": "left", + "token": "LEFT" + }, + { + "name": "right", + "type": "pure-token", + "display_text": "right", + "token": "RIGHT" + } + ] + }, + { + "name": "timeout", + "type": "double", + "display_text": "timeout" + }, + { + "name": "how-many", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "selector", "type": "oneof", - "multiple": true, "arguments": [ { - "name": "client-id", + "name": "count", "type": "integer", - "display_text": "client-id", - "token": "ID", - "since": "2.8.12", - "optional": true + "display_text": "count", + "token": "COUNT" }, { - "name": "client-type", - "type": "oneof", - "token": "TYPE", - "since": "2.8.12", - "optional": true, - "arguments": [ - { - "name": "normal", - "type": "pure-token", - "display_text": "normal", - "token": "NORMAL" - }, - { - "name": "master", - "type": "pure-token", - "display_text": "master", - "token": "MASTER", - "since": "3.2.0" - }, - { - "name": "slave", - "type": "pure-token", - "display_text": "slave", - "token": "SLAVE" - }, - { - "name": "replica", - "type": "pure-token", - "display_text": "replica", - "token": "REPLICA", - "since": "5.0.0" - }, - { - "name": "pubsub", - "type": "pure-token", - "display_text": "pubsub", - "token": "PUBSUB" - } - ] - }, - { - "name": "username", - "type": "string", - "display_text": "username", - "token": "USER", - "optional": true - }, - { - "name": "addr", - "type": "string", - "display_text": "ip:port", - "token": "ADDR", - "optional": true - }, - { - "name": "laddr", - "type": "string", - "display_text": "ip:port", - "token": "LADDR", - "since": "6.2.0", - "optional": true - }, + "name": "exactly", + "type": "integer", + "display_text": "exactly", + "token": "EXACTLY" + } + ] + }, + { + "name": "ordering", + "type": "oneof", + "arguments": [ { - "name": "skipme", - "type": "oneof", - "token": "SKIPME", - "optional": true, - "arguments": [ - { - "name": "yes", - "type": "pure-token", - "display_text": "yes", - "token": "YES" - }, - { - "name": "no", - "type": "pure-token", - "display_text": "no", - "token": "NO" - } - ] + "name": "obo", + "type": "pure-token", + "display_text": "obo", + "token": "OBO" }, { - "name": "maxage", - "type": "integer", - "display_text": "maxage", - "token": "MAXAGE", - "since": "7.4.0", - "optional": true + "name": "bulk", + "type": "pure-token", + "display_text": "bulk", + "token": "BULK" } ] } @@ -3032,1359 +3193,1560 @@ } ], "command_flags": [ - "admin", - "noscript", - "loading", - "stale" + "write", + "denyoom", + "blocking" ] }, - "CLIENT LIST": { - "summary": "Lists open connections.", - "since": "2.4.0", - "group": "connection", - "complexity": "O(N) where N is the number of client connections", - "history": [ - [ - "2.8.12", - "Added unique client `id` field." - ], - [ - "5.0.0", - "Added optional `TYPE` filter." - ], - [ - "6.0.0", - "Added `user` field." - ], - [ - "6.2.0", - "Added `argv-mem`, `tot-mem`, `laddr` and `redir` fields and the optional `ID` filter." - ], - [ - "7.0.0", - "Added `resp`, `multi-mem`, `rbs` and `rbp` fields." - ], - [ - "7.0.3", - "Added `ssub` field." - ], - [ - "7.2.0", - "Added `lib-name` and `lib-ver` fields." - ], - [ - "7.4.0", - "Added `watch` field." - ], - [ - "8.0.0", - "Added `io-thread` field." - ] - ], + "BLMPOP": { + "summary": "Pops the first element from one of multiple lists. Blocks until an element is available otherwise. Deletes the list if the last element was popped.", + "since": "7.0.0", + "group": "list", + "complexity": "O(N+M) where N is the number of provided keys and M is the number of elements returned.", "acl_categories": [ - "@admin", + "@write", + "@list", "@slow", - "@dangerous", - "@connection" + "@blocking" + ], + "arity": -5, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "keynum", + "spec": { + "keynumidx": 0, + "firstkey": 1, + "keystep": 1 + } + }, + "RW": true, + "access": true, + "delete": true + } ], - "arity": -2, "arguments": [ { - "name": "client-type", + "name": "timeout", + "type": "double", + "display_text": "timeout" + }, + { + "name": "numkeys", + "type": "integer", + "display_text": "numkeys" + }, + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "multiple": true + }, + { + "name": "where", "type": "oneof", - "token": "TYPE", - "since": "5.0.0", - "optional": true, "arguments": [ { - "name": "normal", - "type": "pure-token", - "display_text": "normal", - "token": "NORMAL" - }, - { - "name": "master", - "type": "pure-token", - "display_text": "master", - "token": "MASTER" - }, - { - "name": "replica", + "name": "left", "type": "pure-token", - "display_text": "replica", - "token": "REPLICA" + "display_text": "left", + "token": "LEFT" }, { - "name": "pubsub", + "name": "right", "type": "pure-token", - "display_text": "pubsub", - "token": "PUBSUB" + "display_text": "right", + "token": "RIGHT" } ] }, { - "name": "client-id", + "name": "count", "type": "integer", - "display_text": "client-id", - "token": "ID", - "since": "6.2.0", - "optional": true, - "multiple": true + "display_text": "count", + "token": "COUNT", + "optional": true } ], "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ], - "hints": [ - "nondeterministic_output" + "write", + "blocking", + "movablekeys" ] }, - "CLIENT NO-EVICT": { - "summary": "Sets the client eviction mode of the connection.", - "since": "7.0.0", - "group": "connection", - "complexity": "O(1)", + "BLPOP": { + "summary": "Removes and returns the first element in a list. Blocks until an element is available otherwise. Deletes the list if the last element was popped.", + "since": "2.0.0", + "group": "list", + "complexity": "O(N) where N is the number of provided keys.", + "history": [ + [ + "6.0.0", + "`timeout` is interpreted as a double instead of an integer." + ] + ], "acl_categories": [ - "@admin", + "@write", + "@list", "@slow", - "@dangerous", - "@connection" + "@blocking" ], - "arity": 3, - "arguments": [ + "arity": -3, + "key_specs": [ { - "name": "enabled", - "type": "oneof", - "arguments": [ - { - "name": "on", - "type": "pure-token", - "display_text": "on", - "token": "ON" - }, - { - "name": "off", - "type": "pure-token", - "display_text": "off", - "token": "OFF" + "begin_search": { + "type": "index", + "spec": { + "index": 1 } - ] + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": -2, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "delete": true } ], - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ] - }, - "CLIENT NO-TOUCH": { - "summary": "Controls whether commands sent by the client affect the LRU/LFU of accessed keys.", - "since": "7.2.0", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": 3, "arguments": [ { - "name": "enabled", - "type": "oneof", - "arguments": [ - { - "name": "on", - "type": "pure-token", - "display_text": "on", - "token": "ON" - }, - { - "name": "off", - "type": "pure-token", - "display_text": "off", - "token": "OFF" - } - ] + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "multiple": true + }, + { + "name": "timeout", + "type": "double", + "display_text": "timeout" } ], "command_flags": [ - "noscript", - "loading", - "stale" + "write", + "blocking" ] }, - "CLIENT PAUSE": { - "summary": "Suspends commands processing.", - "since": "3.0.0", - "group": "connection", - "complexity": "O(1)", + "BRPOP": { + "summary": "Removes and returns the last element in a list. Blocks until an element is available otherwise. Deletes the list if the last element was popped.", + "since": "2.0.0", + "group": "list", + "complexity": "O(N) where N is the number of provided keys.", "history": [ [ - "6.2.0", - "`CLIENT PAUSE WRITE` mode added along with the `mode` option." + "6.0.0", + "`timeout` is interpreted as a double instead of an integer." ] ], "acl_categories": [ - "@admin", + "@write", + "@list", "@slow", - "@dangerous", - "@connection" + "@blocking" ], "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": -2, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "delete": true + } + ], "arguments": [ { - "name": "timeout", - "type": "integer", - "display_text": "timeout" + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "multiple": true }, { - "name": "mode", - "type": "oneof", - "since": "6.2.0", - "optional": true, - "arguments": [ - { - "name": "write", - "type": "pure-token", - "display_text": "write", - "token": "WRITE" - }, - { - "name": "all", - "type": "pure-token", - "display_text": "all", - "token": "ALL" - } - ] + "name": "timeout", + "type": "double", + "display_text": "timeout" } ], "command_flags": [ - "admin", - "noscript", - "loading", - "stale" + "write", + "blocking" ] }, - "CLIENT REPLY": { - "summary": "Instructs the server whether to reply to commands.", - "since": "3.2.0", - "group": "connection", + "BRPOPLPUSH": { + "summary": "Pops an element from a list, pushes it to another list and returns it. Block until an element is available otherwise. Deletes the list if the last element was popped.", + "since": "2.2.0", + "group": "list", "complexity": "O(1)", + "deprecated_since": "6.2.0", + "replaced_by": "`BLMOVE` with the `RIGHT` and `LEFT` arguments", + "history": [ + [ + "6.0.0", + "`timeout` is interpreted as a double instead of an integer." + ] + ], "acl_categories": [ + "@write", + "@list", "@slow", - "@connection" + "@blocking" ], - "arity": 3, - "arguments": [ + "arity": 4, + "key_specs": [ { - "name": "action", - "type": "oneof", - "arguments": [ - { - "name": "on", - "type": "pure-token", - "display_text": "on", - "token": "ON" - }, - { - "name": "off", - "type": "pure-token", - "display_text": "off", - "token": "OFF" - }, - { - "name": "skip", - "type": "pure-token", - "display_text": "skip", - "token": "SKIP" + "begin_search": { + "type": "index", + "spec": { + "index": 1 } - ] + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "delete": true + }, + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "insert": true } ], - "command_flags": [ - "noscript", - "loading", - "stale" - ] - }, - "CLIENT SETINFO": { - "summary": "Sets information specific to the client or connection.", - "since": "7.2.0", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": 4, "arguments": [ { - "name": "attr", - "type": "oneof", - "arguments": [ - { - "name": "libname", - "type": "string", - "display_text": "libname", - "token": "LIB-NAME" - }, - { - "name": "libver", - "type": "string", - "display_text": "libver", - "token": "LIB-VER" - } - ] + "name": "source", + "type": "key", + "display_text": "source", + "key_spec_index": 0 + }, + { + "name": "destination", + "type": "key", + "display_text": "destination", + "key_spec_index": 1 + }, + { + "name": "timeout", + "type": "double", + "display_text": "timeout" } ], "command_flags": [ - "noscript", - "loading", - "stale" + "write", + "denyoom", + "blocking" ], - "hints": [ - "request_policy:all_nodes", - "response_policy:all_succeeded" + "doc_flags": [ + "deprecated" ] }, - "CLIENT SETNAME": { - "summary": "Sets the connection name.", - "since": "2.6.9", - "group": "connection", - "complexity": "O(1)", + "BZMPOP": { + "summary": "Removes and returns a member by score from one or more sorted sets. Blocks until a member is available otherwise. Deletes the sorted set if the last element was popped.", + "since": "7.0.0", + "group": "sorted-set", + "complexity": "O(K) + O(M*log(N)) where K is the number of provided keys, N being the number of elements in the sorted set, and M being the number of elements popped.", "acl_categories": [ + "@write", + "@sortedset", "@slow", - "@connection" + "@blocking" ], - "arity": 3, - "arguments": [ + "arity": -5, + "key_specs": [ { - "name": "connection-name", - "type": "string", - "display_text": "connection-name" + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "keynum", + "spec": { + "keynumidx": 0, + "firstkey": 1, + "keystep": 1 + } + }, + "RW": true, + "access": true, + "delete": true } ], - "command_flags": [ - "noscript", - "loading", - "stale" - ], - "hints": [ - "request_policy:all_nodes", - "response_policy:all_succeeded" - ] - }, - "CLIENT TRACKING": { - "summary": "Controls server-assisted client-side caching for the connection.", - "since": "6.0.0", - "group": "connection", - "complexity": "O(1). Some options may introduce additional complexity.", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": -3, "arguments": [ { - "name": "status", + "name": "timeout", + "type": "double", + "display_text": "timeout" + }, + { + "name": "numkeys", + "type": "integer", + "display_text": "numkeys" + }, + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "multiple": true + }, + { + "name": "where", "type": "oneof", "arguments": [ { - "name": "on", + "name": "min", "type": "pure-token", - "display_text": "on", - "token": "ON" + "display_text": "min", + "token": "MIN" }, { - "name": "off", + "name": "max", "type": "pure-token", - "display_text": "off", - "token": "OFF" + "display_text": "max", + "token": "MAX" } ] }, { - "name": "client-id", + "name": "count", "type": "integer", - "display_text": "client-id", - "token": "REDIRECT", - "optional": true - }, - { - "name": "prefix", - "type": "string", - "display_text": "prefix", - "token": "PREFIX", - "optional": true, - "multiple": true, - "multiple_token": true - }, - { - "name": "bcast", - "type": "pure-token", - "display_text": "bcast", - "token": "BCAST", - "optional": true - }, - { - "name": "optin", - "type": "pure-token", - "display_text": "optin", - "token": "OPTIN", - "optional": true - }, - { - "name": "optout", - "type": "pure-token", - "display_text": "optout", - "token": "OPTOUT", - "optional": true - }, - { - "name": "noloop", - "type": "pure-token", - "display_text": "noloop", - "token": "NOLOOP", + "display_text": "count", + "token": "COUNT", "optional": true } ], "command_flags": [ - "noscript", - "loading", - "stale" - ] - }, - "CLIENT TRACKINGINFO": { - "summary": "Returns information about server-assisted client-side caching for the connection.", - "since": "6.2.0", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": 2, - "command_flags": [ - "noscript", - "loading", - "stale" + "write", + "blocking", + "movablekeys" ] }, - "CLIENT UNBLOCK": { - "summary": "Unblocks a client blocked by a blocking command from a different connection.", + "BZPOPMAX": { + "summary": "Removes and returns the member with the highest score from one or more sorted sets. Blocks until a member available otherwise. Deletes the sorted set if the last element was popped.", "since": "5.0.0", - "group": "connection", - "complexity": "O(log N) where N is the number of client connections", + "group": "sorted-set", + "complexity": "O(log(N)) with N being the number of elements in the sorted set.", + "history": [ + [ + "6.0.0", + "`timeout` is interpreted as a double instead of an integer." + ] + ], "acl_categories": [ - "@admin", - "@slow", - "@dangerous", - "@connection" + "@write", + "@sortedset", + "@fast", + "@blocking" ], "arity": -3, - "arguments": [ - { - "name": "client-id", - "type": "integer", - "display_text": "client-id" - }, + "key_specs": [ { - "name": "unblock-type", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "timeout", - "type": "pure-token", - "display_text": "timeout", - "token": "TIMEOUT" - }, - { - "name": "error", - "type": "pure-token", - "display_text": "error", - "token": "ERROR" + "begin_search": { + "type": "index", + "spec": { + "index": 1 } - ] + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": -2, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "delete": true } ], - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ] - }, - "CLIENT UNPAUSE": { - "summary": "Resumes processing commands from paused clients.", - "since": "6.2.0", - "group": "connection", - "complexity": "O(N) Where N is the number of paused clients", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous", - "@connection" + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "multiple": true + }, + { + "name": "timeout", + "type": "double", + "display_text": "timeout" + } ], - "arity": 2, "command_flags": [ - "admin", - "noscript", - "loading", - "stale" + "write", + "blocking", + "fast" ] }, - "CLUSTER": { - "summary": "A container for Redis Cluster commands.", - "since": "3.0.0", - "group": "cluster", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" + "BZPOPMIN": { + "summary": "Removes and returns the member with the lowest score from one or more sorted sets. Blocks until a member is available otherwise. Deletes the sorted set if the last element was popped.", + "since": "5.0.0", + "group": "sorted-set", + "complexity": "O(log(N)) with N being the number of elements in the sorted set.", + "history": [ + [ + "6.0.0", + "`timeout` is interpreted as a double instead of an integer." + ] ], - "arity": -2 - }, - "CLUSTER ADDSLOTS": { - "summary": "Assigns new hash slots to a node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(N) where N is the total number of hash slot arguments", "acl_categories": [ - "@admin", - "@slow", - "@dangerous" + "@write", + "@sortedset", + "@fast", + "@blocking" ], "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": -2, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "delete": true + } + ], "arguments": [ { - "name": "slot", - "type": "integer", - "display_text": "slot", + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, "multiple": true + }, + { + "name": "timeout", + "type": "double", + "display_text": "timeout" } ], "command_flags": [ - "admin", - "stale", - "no_async_loading" + "write", + "blocking", + "fast" ] }, - "CLUSTER ADDSLOTSRANGE": { - "summary": "Assigns new hash slot ranges to a node.", - "since": "7.0.0", - "group": "cluster", - "complexity": "O(N) where N is the total number of the slots between the start slot and end slot arguments.", + "CF.ADD": { + "summary": "Adds an item to a Cuckoo Filter", + "since": "1.0.0", + "group": "module", + "complexity": "O(k + i), where k is the number of sub-filters and i is maxIterations", "acl_categories": [ - "@admin", - "@slow", - "@dangerous" + "@write", + "@cuckoo" ], - "arity": -4, - "arguments": [ + "arity": 3, + "key_specs": [ { - "name": "range", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "start-slot", - "type": "integer", - "display_text": "start-slot" - }, - { - "name": "end-slot", - "type": "integer", - "display_text": "end-slot" + "begin_search": { + "type": "index", + "spec": { + "index": 1 } - ] + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true } ], - "command_flags": [ - "admin", - "stale", - "no_async_loading" - ] - }, - "CLUSTER BUMPEPOCH": { - "summary": "Advances the cluster config epoch.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "stale", - "no_async_loading" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "CLUSTER COUNT-FAILURE-REPORTS": { - "summary": "Returns the number of active failure reports active for a node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(N) where N is the number of failure reports", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 3, "arguments": [ { - "name": "node-id", + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "item", "type": "string", - "display_text": "node-id" + "display_text": "item" } ], "command_flags": [ - "admin", - "loading", - "stale" + "write", + "denyoom", + "module" ], - "hints": [ - "nondeterministic_output" - ] + "module": "bf" }, - "CLUSTER COUNTKEYSINSLOT": { - "summary": "Returns the number of keys in a hash slot.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", + "CF.ADDNX": { + "summary": "Adds an item to a Cuckoo Filter if the item did not exist previously.", + "since": "1.0.0", + "group": "module", + "complexity": "O(k + i), where k is the number of sub-filters and i is maxIterations", "acl_categories": [ - "@slow" + "@write", + "@cuckoo" ], "arity": 3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true + } + ], "arguments": [ { - "name": "slot", - "type": "integer", - "display_text": "slot" + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "item", + "type": "string", + "display_text": "item" } ], "command_flags": [ - "stale" - ] + "write", + "denyoom", + "module" + ], + "module": "bf" }, - "CLUSTER DELSLOTS": { - "summary": "Sets hash slots as unbound for a node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(N) where N is the total number of hash slot arguments", + "CF.COMPACT": { + "group": "module", "acl_categories": [ - "@admin", - "@slow", - "@dangerous" + "@read", + "@cuckoo" ], - "arity": -3, - "arguments": [ + "arity": -1, + "key_specs": [ { - "name": "slot", - "type": "integer", - "display_text": "slot", - "multiple": true + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "update": true } ], "command_flags": [ - "admin", - "stale", - "no_async_loading" - ] + "readonly", + "module", + "fast" + ], + "module": "bf" }, - "CLUSTER DELSLOTSRANGE": { - "summary": "Sets hash slot ranges as unbound for a node.", - "since": "7.0.0", - "group": "cluster", - "complexity": "O(N) where N is the total number of the slots between the start slot and end slot arguments.", + "CF.COUNT": { + "summary": "Return the number of times an item might be in a Cuckoo Filter", + "since": "1.0.0", + "group": "module", + "complexity": "O(k), where k is the number of sub-filters", "acl_categories": [ - "@admin", - "@slow", - "@dangerous" + "@read", + "@cuckoo" ], - "arity": -4, - "arguments": [ + "arity": 3, + "key_specs": [ { - "name": "range", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "start-slot", - "type": "integer", - "display_text": "start-slot" - }, - { - "name": "end-slot", - "type": "integer", - "display_text": "end-slot" + "begin_search": { + "type": "index", + "spec": { + "index": 1 } - ] + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true } ], - "command_flags": [ - "admin", - "stale", - "no_async_loading" - ] - }, - "CLUSTER FAILOVER": { - "summary": "Forces a replica to perform a manual failover of its master.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -2, "arguments": [ { - "name": "options", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "force", - "type": "pure-token", - "display_text": "force", - "token": "FORCE" - }, - { - "name": "takeover", - "type": "pure-token", - "display_text": "takeover", - "token": "TAKEOVER" - } - ] + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "item", + "type": "string", + "display_text": "item" } ], "command_flags": [ - "admin", - "stale", - "no_async_loading" - ] + "readonly", + "module", + "fast" + ], + "module": "bf" }, - "CLUSTER FLUSHSLOTS": { - "summary": "Deletes all slots information from a node.", - "since": "3.0.0", - "group": "cluster", + "CF.DEBUG": { + "summary": "Returns internal debug information about a Cuckoo Filter", + "since": "1.0.0", + "group": "module", "complexity": "O(1)", "acl_categories": [ - "@admin", - "@slow", - "@dangerous" + "@read", + "@cuckoo" ], "arity": 2, - "command_flags": [ - "admin", - "stale", - "no_async_loading" - ] - }, - "CLUSTER FORGET": { - "summary": "Removes a node from the nodes table.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } ], - "arity": 3, "arguments": [ { - "name": "node-id", - "type": "string", - "display_text": "node-id" + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 } ], "command_flags": [ - "admin", - "stale", - "no_async_loading" - ] + "readonly", + "module", + "fast" + ], + "hints": [ + "dont_cache" + ], + "module": "bf" }, - "CLUSTER GETKEYSINSLOT": { - "summary": "Returns the key names in a hash slot.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(N) where N is the number of requested keys", + "CF.DEL": { + "summary": "Deletes an item from a Cuckoo Filter", + "since": "1.0.0", + "group": "module", + "complexity": "O(k), where k is the number of sub-filters", "acl_categories": [ - "@slow" + "@write", + "@cuckoo" + ], + "arity": 3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true + } ], - "arity": 4, "arguments": [ { - "name": "slot", - "type": "integer", - "display_text": "slot" + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 }, { - "name": "count", - "type": "integer", - "display_text": "count" + "name": "item", + "type": "string", + "display_text": "item" } ], "command_flags": [ - "stale" + "write", + "module", + "fast" ], - "hints": [ - "nondeterministic_output" - ] + "module": "bf" }, - "CLUSTER HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "5.0.0", - "group": "cluster", - "complexity": "O(1)", + "CF.EXISTS": { + "summary": "Checks whether one or more items exist in a Cuckoo Filter", + "since": "1.0.0", + "group": "module", + "complexity": "O(k), where k is the number of sub-filters", "acl_categories": [ - "@slow" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "CLUSTER INFO": { - "summary": "Returns information about the state of a node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", - "acl_categories": [ - "@slow" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "CLUSTER KEYSLOT": { - "summary": "Returns the hash slot for a key.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(N) where N is the number of bytes in the key", - "acl_categories": [ - "@slow" + "@read", + "@cuckoo" ], "arity": 3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], "arguments": [ { "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "item", "type": "string", - "display_text": "key" + "display_text": "item" } ], "command_flags": [ - "loading", - "stale" - ] + "readonly", + "module", + "fast" + ], + "module": "bf" }, - "CLUSTER LINKS": { - "summary": "Returns a list of all TCP links to and from peer nodes.", - "since": "7.0.0", - "group": "cluster", - "complexity": "O(N) where N is the total number of Cluster nodes", + "CF.INFO": { + "summary": "Returns information about a Cuckoo Filter", + "since": "1.0.0", + "group": "module", + "complexity": "O(1)", "acl_categories": [ - "@slow" + "@read", + "@fast", + "@cuckoo" ], "arity": 2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + } + ], "command_flags": [ - "loading", - "stale" + "readonly", + "module", + "fast" ], "hints": [ - "nondeterministic_output" - ] - }, - "CLUSTER MEET": { - "summary": "Forces a node to handshake with another node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", - "history": [ - [ - "4.0.0", - "Added the optional `cluster_bus_port` argument." - ] + "dont_cache" ], + "module": "bf" + }, + "CF.INSERT": { + "summary": "Adds one or more items to a Cuckoo Filter. A filter will be created if it does not exist", + "since": "1.0.0", + "group": "module", + "complexity": "O(n * (k + i)), where n is the number of items, k is the number of sub-filters and i is maxIterations", "acl_categories": [ - "@admin", - "@slow", - "@dangerous" + "@write", + "@cuckoo" ], "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true + } + ], "arguments": [ { - "name": "ip", - "type": "string", - "display_text": "ip" + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 }, { - "name": "port", - "type": "integer", - "display_text": "port" + "name": "capacity", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "capacity", + "type": "pure-token", + "display_text": "capacity", + "token": "CAPACITY" + }, + { + "name": "capacity", + "type": "integer", + "display_text": "capacity" + } + ] }, { - "name": "cluster-bus-port", - "type": "integer", - "display_text": "cluster-bus-port", - "since": "4.0.0", + "name": "nocreate", + "type": "pure-token", + "display_text": "nocreate", + "token": "NOCREATE", "optional": true + }, + { + "name": "items", + "type": "pure-token", + "display_text": "items", + "token": "ITEMS" + }, + { + "name": "item", + "type": "string", + "display_text": "item", + "multiple": true } ], "command_flags": [ - "admin", - "stale", - "no_async_loading" - ] + "write", + "denyoom", + "module" + ], + "module": "bf" }, - "CLUSTER MIGRATION": { - "summary": "Start, monitor and cancel slot migration.", - "since": "8.4.0", - "group": "cluster", - "complexity": "O(N) where N is the total number of the slots between the start slot and end slot arguments.", + "CF.INSERTNX": { + "summary": "Adds one or more items to a Cuckoo Filter if the items did not exist previously. A filter will be created if it does not exist", + "since": "1.0.0", + "group": "module", + "complexity": "O(n * (k + i)), where n is the number of items, k is the number of sub-filters and i is maxIterations", "acl_categories": [ - "@admin", - "@slow", - "@dangerous" + "@write", + "@cuckoo" ], "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true + } + ], "arguments": [ { - "name": "subcommand", - "type": "oneof", + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "capacity", + "type": "block", + "optional": true, "arguments": [ { - "name": "import", - "type": "block", - "token": "IMPORT", - "multiple": true, - "arguments": [ - { - "name": "start-slot", - "type": "integer", - "display_text": "start-slot" - }, - { - "name": "end-slot", - "type": "integer", - "display_text": "end-slot" - } - ] - }, - { - "name": "cancel", - "type": "oneof", - "token": "CANCEL", - "arguments": [ - { - "name": "task-id", - "type": "string", - "display_text": "task-id", - "token": "ID" - }, - { - "name": "all", - "type": "pure-token", - "display_text": "all", - "token": "ALL" - } - ] + "name": "capacity", + "type": "pure-token", + "display_text": "capacity", + "token": "CAPACITY" }, { - "name": "status", - "type": "oneof", - "token": "STATUS", - "arguments": [ - { - "name": "task-id", - "type": "string", - "display_text": "task-id", - "token": "ID", - "optional": true - }, - { - "name": "all", - "type": "pure-token", - "display_text": "all", - "token": "ALL", - "optional": true - } - ] + "name": "capacity", + "type": "integer", + "display_text": "capacity" } ] + }, + { + "name": "nocreate", + "type": "pure-token", + "display_text": "nocreate", + "token": "NOCREATE", + "optional": true + }, + { + "name": "items", + "type": "pure-token", + "display_text": "items", + "token": "ITEMS" + }, + { + "name": "item", + "type": "string", + "display_text": "item", + "multiple": true } ], "command_flags": [ - "admin", - "stale", - "no_async_loading" - ] - }, - "CLUSTER MYID": { - "summary": "Returns the ID of a node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", - "acl_categories": [ - "@slow" + "write", + "denyoom", + "module" ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] + "module": "bf" }, - "CLUSTER MYSHARDID": { - "summary": "Returns the shard ID of a node.", - "since": "7.2.0", - "group": "cluster", - "complexity": "O(1)", + "CF.LOADCHUNK": { + "summary": "Restores a filter previously saved using SCANDUMP", + "since": "1.0.0", + "group": "module", + "complexity": "O(n), where n is the capacity", "acl_categories": [ - "@slow" + "@write", + "@cuckoo" ], - "arity": 2, - "command_flags": [ - "loading", - "stale" + "arity": 4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true + } ], - "hints": [ - "nondeterministic_output" - ] - }, - "CLUSTER NODES": { - "summary": "Returns the cluster configuration for a node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(N) where N is the total number of Cluster nodes", - "acl_categories": [ - "@slow" + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "iterator", + "type": "integer", + "display_text": "iterator" + }, + { + "name": "data", + "type": "string", + "display_text": "data" + } ], - "arity": 2, "command_flags": [ - "loading", - "stale" + "write", + "denyoom", + "module" ], - "hints": [ - "nondeterministic_output" - ] + "module": "bf" }, - "CLUSTER REPLICAS": { - "summary": "Lists the replica nodes of a master node.", - "since": "5.0.0", - "group": "cluster", - "complexity": "O(N) where N is the number of replicas.", + "CF.MEXISTS": { + "summary": "Checks whether one or more items exist in a Cuckoo Filter", + "since": "1.0.0", + "group": "module", + "complexity": "O(k * n), where k is the number of sub-filters and n is the number of items", "acl_categories": [ - "@admin", - "@slow", - "@dangerous" + "@read", + "@cuckoo" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } ], - "arity": 3, "arguments": [ { - "name": "node-id", + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "item", "type": "string", - "display_text": "node-id" + "display_text": "item", + "multiple": true } ], "command_flags": [ - "admin", - "loading", - "stale" + "readonly", + "module", + "fast" ], - "hints": [ - "nondeterministic_output" - ] + "module": "bf" }, - "CLUSTER REPLICATE": { - "summary": "Configure a node as replica of a master node.", - "since": "3.0.0", - "group": "cluster", + "CF.RESERVE": { + "summary": "Creates a new Cuckoo Filter", + "since": "1.0.0", + "group": "module", "complexity": "O(1)", "acl_categories": [ - "@admin", - "@slow", - "@dangerous" + "@write", + "@fast", + "@cuckoo" ], - "arity": 3, - "arguments": [ + "arity": -3, + "key_specs": [ { - "name": "node-id", - "type": "string", - "display_text": "node-id" + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true } ], - "command_flags": [ - "admin", - "stale", - "no_async_loading" - ] - }, - "CLUSTER RESET": { - "summary": "Resets a node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(N) where N is the number of known nodes. The command may execute a FLUSHALL as a side effect.", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -2, "arguments": [ { - "name": "reset-type", - "type": "oneof", + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "capacity", + "type": "integer", + "display_text": "capacity" + }, + { + "name": "bucketsize", + "type": "block", + "token": "BUCKETSIZE", "optional": true, "arguments": [ { - "name": "hard", - "type": "pure-token", - "display_text": "hard", - "token": "HARD" - }, + "name": "bucketsize", + "type": "integer", + "display_text": "bucketsize" + } + ] + }, + { + "name": "maxiterations", + "type": "block", + "token": "MAXITERATIONS", + "optional": true, + "arguments": [ { - "name": "soft", - "type": "pure-token", - "display_text": "soft", - "token": "SOFT" + "name": "maxiterations", + "type": "integer", + "display_text": "maxiterations" + } + ] + }, + { + "name": "expansion", + "type": "block", + "token": "EXPANSION", + "optional": true, + "arguments": [ + { + "name": "expansion", + "type": "integer", + "display_text": "expansion" } ] } ], "command_flags": [ - "admin", - "noscript", - "stale" - ] + "write", + "denyoom", + "module" + ], + "module": "bf" }, - "CLUSTER SAVECONFIG": { - "summary": "Forces a node to save the cluster configuration to disk.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "stale", - "no_async_loading" - ] - }, - "CLUSTER SET-CONFIG-EPOCH": { - "summary": "Sets the configuration epoch for a new node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", + "CF.SCANDUMP": { + "summary": "Begins an incremental save of the bloom filter", + "since": "1.0.0", + "group": "module", + "complexity": "O(n), where n is the capacity", "acl_categories": [ - "@admin", - "@slow", - "@dangerous" + "@read", + "@cuckoo" ], "arity": 3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true + } + ], "arguments": [ { - "name": "config-epoch", + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "iterator", "type": "integer", - "display_text": "config-epoch" + "display_text": "iterator" } ], "command_flags": [ - "admin", - "stale", - "no_async_loading" - ] + "readonly", + "module", + "fast" + ], + "hints": [ + "dont_cache" + ], + "module": "bf" }, - "CLUSTER SETSLOT": { - "summary": "Binds a hash slot to a node.", - "since": "3.0.0", - "group": "cluster", + "CLIENT": { + "summary": "A container for client connection commands.", + "since": "2.4.0", + "group": "connection", + "complexity": "Depends on subcommand.", + "acl_categories": [ + "@slow" + ], + "arity": -2 + }, + "CLIENT CACHING": { + "summary": "Instructs the server whether to track the keys in the next request.", + "since": "6.0.0", + "group": "connection", "complexity": "O(1)", "acl_categories": [ - "@admin", "@slow", - "@dangerous" + "@connection" ], - "arity": -4, + "arity": 3, "arguments": [ { - "name": "slot", - "type": "integer", - "display_text": "slot" - }, - { - "name": "subcommand", + "name": "mode", "type": "oneof", "arguments": [ { - "name": "importing", - "type": "string", - "display_text": "node-id", - "token": "IMPORTING" - }, - { - "name": "migrating", - "type": "string", - "display_text": "node-id", - "token": "MIGRATING" - }, - { - "name": "node", - "type": "string", - "display_text": "node-id", - "token": "NODE" + "name": "yes", + "type": "pure-token", + "display_text": "yes", + "token": "YES" }, { - "name": "stable", + "name": "no", "type": "pure-token", - "display_text": "stable", - "token": "STABLE" + "display_text": "no", + "token": "NO" } ] } ], "command_flags": [ - "admin", - "stale", - "no_async_loading" + "noscript", + "loading", + "stale" ] }, - "CLUSTER SHARDS": { - "summary": "Returns the mapping of cluster slots to shards.", - "since": "7.0.0", - "group": "cluster", - "complexity": "O(N) where N is the total number of cluster nodes", + "CLIENT GETNAME": { + "summary": "Returns the name of the connection.", + "since": "2.6.9", + "group": "connection", + "complexity": "O(1)", "acl_categories": [ - "@slow" + "@slow", + "@connection" ], "arity": 2, "command_flags": [ + "noscript", "loading", "stale" + ] + }, + "CLIENT GETREDIR": { + "summary": "Returns the client ID to which the connection's tracking notifications are redirected.", + "since": "6.0.0", + "group": "connection", + "complexity": "O(1)", + "acl_categories": [ + "@slow", + "@connection" ], - "hints": [ - "nondeterministic_output" + "arity": 2, + "command_flags": [ + "noscript", + "loading", + "stale" ] }, - "CLUSTER SLAVES": { - "summary": "Lists the replica nodes of a master node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(N) where N is the number of replicas.", - "deprecated_since": "5.0.0", - "replaced_by": "`CLUSTER REPLICAS`", + "CLIENT HELP": { + "summary": "Returns helpful text about the different subcommands.", + "since": "5.0.0", + "group": "connection", + "complexity": "O(1)", "acl_categories": [ - "@admin", "@slow", - "@dangerous" + "@connection" ], - "arity": 3, - "arguments": [ - { - "name": "node-id", - "type": "string", - "display_text": "node-id" - } + "arity": 2, + "command_flags": [ + "loading", + "stale" + ] + }, + "CLIENT ID": { + "summary": "Returns the unique client ID of the connection.", + "since": "5.0.0", + "group": "connection", + "complexity": "O(1)", + "acl_categories": [ + "@slow", + "@connection" ], + "arity": 2, "command_flags": [ - "admin", + "noscript", "loading", "stale" + ] + }, + "CLIENT INFO": { + "summary": "Returns information about the connection.", + "since": "6.2.0", + "group": "connection", + "complexity": "O(1)", + "acl_categories": [ + "@slow", + "@connection" ], - "doc_flags": [ - "deprecated" + "arity": 2, + "command_flags": [ + "noscript", + "loading", + "stale" ], "hints": [ "nondeterministic_output" ] }, - "CLUSTER SLOT-STATS": { - "summary": "Return an array of slot usage statistics for slots assigned to the current node.", - "since": "8.2.0", - "group": "cluster", - "complexity": "O(N) where N is the total number of slots based on arguments. O(N*log(N)) with ORDERBY subcommand.", + "CLIENT KILL": { + "summary": "Terminates open connections.", + "since": "2.4.0", + "group": "connection", + "complexity": "O(N) where N is the number of client connections", + "history": [ + [ + "2.8.12", + "Added new filter format." + ], + [ + "2.8.12", + "`ID` option." + ], + [ + "3.2.0", + "Added `master` type in for `TYPE` option." + ], + [ + "5.0.0", + "Replaced `slave` `TYPE` with `replica`. `slave` still supported for backward compatibility." + ], + [ + "6.2.0", + "`LADDR` option." + ], + [ + "7.4.0", + "`MAXAGE` option." + ] + ], "acl_categories": [ - "@slow" + "@admin", + "@slow", + "@dangerous", + "@connection" ], - "arity": -4, + "arity": -3, "arguments": [ { "name": "filter", "type": "oneof", "arguments": [ { - "name": "slotsrange", - "type": "block", - "token": "SLOTSRANGE", - "arguments": [ + "name": "old-format", + "type": "string", + "display_text": "ip:port", + "deprecated_since": "2.8.12" + }, + { + "name": "new-format", + "type": "oneof", + "multiple": true, + "arguments": [ { - "name": "start-slot", + "name": "client-id", "type": "integer", - "display_text": "start-slot" + "display_text": "client-id", + "token": "ID", + "since": "2.8.12", + "optional": true }, { - "name": "end-slot", - "type": "integer", - "display_text": "end-slot" - } - ] - }, - { - "name": "orderby", - "type": "block", - "token": "ORDERBY", - "arguments": [ + "name": "client-type", + "type": "oneof", + "token": "TYPE", + "since": "2.8.12", + "optional": true, + "arguments": [ + { + "name": "normal", + "type": "pure-token", + "display_text": "normal", + "token": "NORMAL" + }, + { + "name": "master", + "type": "pure-token", + "display_text": "master", + "token": "MASTER", + "since": "3.2.0" + }, + { + "name": "slave", + "type": "pure-token", + "display_text": "slave", + "token": "SLAVE" + }, + { + "name": "replica", + "type": "pure-token", + "display_text": "replica", + "token": "REPLICA", + "since": "5.0.0" + }, + { + "name": "pubsub", + "type": "pure-token", + "display_text": "pubsub", + "token": "PUBSUB" + } + ] + }, { - "name": "metric", + "name": "username", "type": "string", - "display_text": "metric" + "display_text": "username", + "token": "USER", + "optional": true }, { - "name": "limit", - "type": "integer", - "display_text": "limit", - "token": "LIMIT", + "name": "addr", + "type": "string", + "display_text": "ip:port", + "token": "ADDR", "optional": true }, { - "name": "order", + "name": "laddr", + "type": "string", + "display_text": "ip:port", + "token": "LADDR", + "since": "6.2.0", + "optional": true + }, + { + "name": "skipme", "type": "oneof", + "token": "SKIPME", "optional": true, "arguments": [ { - "name": "asc", + "name": "yes", "type": "pure-token", - "display_text": "asc", - "token": "ASC" + "display_text": "yes", + "token": "YES" }, { - "name": "desc", + "name": "no", "type": "pure-token", - "display_text": "desc", - "token": "DESC" + "display_text": "no", + "token": "NO" } ] + }, + { + "name": "maxage", + "type": "integer", + "display_text": "maxage", + "token": "MAXAGE", + "since": "7.4.0", + "optional": true } ] } @@ -4392,462 +4754,503 @@ } ], "command_flags": [ + "admin", + "noscript", "loading", "stale" - ], - "hints": [ - "nondeterministic_output", - "request_policy:all_shards" ] }, - "CLUSTER SLOTS": { - "summary": "Returns the mapping of cluster slots to nodes.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(N) where N is the total number of Cluster nodes", - "deprecated_since": "7.0.0", - "replaced_by": "`CLUSTER SHARDS`", + "CLIENT LIST": { + "summary": "Lists open connections.", + "since": "2.4.0", + "group": "connection", + "complexity": "O(N) where N is the number of client connections", "history": [ [ - "4.0.0", - "Added node IDs." + "2.8.12", + "Added unique client `id` field." + ], + [ + "5.0.0", + "Added optional `TYPE` filter." + ], + [ + "6.0.0", + "Added `user` field." + ], + [ + "6.2.0", + "Added `argv-mem`, `tot-mem`, `laddr` and `redir` fields and the optional `ID` filter." ], [ "7.0.0", - "Added additional networking metadata field." + "Added `resp`, `multi-mem`, `rbs` and `rbp` fields." + ], + [ + "7.0.3", + "Added `ssub` field." + ], + [ + "7.2.0", + "Added `lib-name` and `lib-ver` fields." + ], + [ + "7.4.0", + "Added `watch` field." + ], + [ + "8.0.0", + "Added `io-thread` field." ] ], "acl_categories": [ - "@slow" + "@admin", + "@slow", + "@dangerous", + "@connection" + ], + "arity": -2, + "arguments": [ + { + "name": "client-type", + "type": "oneof", + "token": "TYPE", + "since": "5.0.0", + "optional": true, + "arguments": [ + { + "name": "normal", + "type": "pure-token", + "display_text": "normal", + "token": "NORMAL" + }, + { + "name": "master", + "type": "pure-token", + "display_text": "master", + "token": "MASTER" + }, + { + "name": "replica", + "type": "pure-token", + "display_text": "replica", + "token": "REPLICA" + }, + { + "name": "pubsub", + "type": "pure-token", + "display_text": "pubsub", + "token": "PUBSUB" + } + ] + }, + { + "name": "client-id", + "type": "integer", + "display_text": "client-id", + "token": "ID", + "since": "6.2.0", + "optional": true, + "multiple": true + } ], - "arity": 2, "command_flags": [ + "admin", + "noscript", "loading", "stale" ], - "doc_flags": [ - "deprecated" - ], "hints": [ "nondeterministic_output" ] }, - "CLUSTER SYNCSLOTS": { - "summary": "Internal command for atomic slot migration protocol between cluster nodes.", - "since": "8.4.0", - "group": "cluster", + "CLIENT NO-EVICT": { + "summary": "Sets the client eviction mode of the connection.", + "since": "7.0.0", + "group": "connection", "complexity": "O(1)", "acl_categories": [ "@admin", "@slow", - "@dangerous" + "@dangerous", + "@connection" ], - "arity": -3, + "arity": 3, "arguments": [ { - "name": "subcommand", + "name": "enabled", "type": "oneof", "arguments": [ { - "name": "sync", - "type": "block", - "token": "SYNC", - "arguments": [ - { - "name": "task-id", - "type": "string", - "display_text": "task-id" - }, - { - "name": "slot-range", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "start-slot", - "type": "integer", - "display_text": "start-slot" - }, - { - "name": "end-slot", - "type": "integer", - "display_text": "end-slot" - } - ] - } - ] - }, - { - "name": "task-id", - "type": "string", - "display_text": "task-id", - "token": "RDBCHANNEL" - }, - { - "name": "snapshot-eof", + "name": "on", "type": "pure-token", - "display_text": "snapshot-eof", - "token": "SNAPSHOT-EOF" + "display_text": "on", + "token": "ON" }, { - "name": "stream-eof", + "name": "off", "type": "pure-token", - "display_text": "stream-eof", - "token": "STREAM-EOF" - }, - { - "name": "ack", - "type": "block", - "token": "ACK", - "arguments": [ - { - "name": "state", - "type": "string", - "display_text": "state" - }, - { - "name": "offset", - "type": "integer", - "display_text": "offset" - } - ] - }, - { - "name": "error", - "type": "string", - "display_text": "error", - "token": "FAIL" - }, - { - "name": "conf", - "type": "block", - "token": "CONF", - "arguments": [ - { - "name": "option", - "type": "string", - "display_text": "option", - "multiple": true - }, - { - "name": "value", - "type": "string", - "display_text": "value", - "multiple": true - } - ] + "display_text": "off", + "token": "OFF" } ] } ], "command_flags": [ "admin", - "stale", - "no_async_loading" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "COMMAND": { - "summary": "Returns detailed information about all commands.", - "since": "2.8.13", - "group": "server", - "complexity": "O(N) where N is the total number of Redis commands", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": -1, - "command_flags": [ + "noscript", "loading", "stale" - ], - "hints": [ - "nondeterministic_output_order" ] }, - "COMMAND COUNT": { - "summary": "Returns a count of commands.", - "since": "2.8.13", - "group": "server", + "CLIENT NO-TOUCH": { + "summary": "Controls whether commands sent by the client affect the LRU/LFU of accessed keys.", + "since": "7.2.0", + "group": "connection", "complexity": "O(1)", "acl_categories": [ "@slow", "@connection" ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "COMMAND DOCS": { - "summary": "Returns documentary information about one, multiple or all commands.", - "since": "7.0.0", - "group": "server", - "complexity": "O(N) where N is the number of commands to look up", - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": -2, + "arity": 3, "arguments": [ { - "name": "command-name", - "type": "string", - "display_text": "command-name", - "optional": true, - "multiple": true + "name": "enabled", + "type": "oneof", + "arguments": [ + { + "name": "on", + "type": "pure-token", + "display_text": "on", + "token": "ON" + }, + { + "name": "off", + "type": "pure-token", + "display_text": "off", + "token": "OFF" + } + ] } ], "command_flags": [ + "noscript", "loading", "stale" - ], - "hints": [ - "nondeterministic_output_order" ] }, - "COMMAND GETKEYS": { - "summary": "Extracts the key names from an arbitrary command.", - "since": "2.8.13", - "group": "server", - "complexity": "O(N) where N is the number of arguments to the command", + "CLIENT PAUSE": { + "summary": "Suspends commands processing.", + "since": "3.0.0", + "group": "connection", + "complexity": "O(1)", + "history": [ + [ + "6.2.0", + "`CLIENT PAUSE WRITE` mode added along with the `mode` option." + ] + ], "acl_categories": [ + "@admin", "@slow", + "@dangerous", "@connection" ], "arity": -3, "arguments": [ { - "name": "command", - "type": "string", - "display_text": "command" + "name": "timeout", + "type": "integer", + "display_text": "timeout" }, { - "name": "arg", - "type": "string", - "display_text": "arg", + "name": "mode", + "type": "oneof", + "since": "6.2.0", "optional": true, - "multiple": true + "arguments": [ + { + "name": "write", + "type": "pure-token", + "display_text": "write", + "token": "WRITE" + }, + { + "name": "all", + "type": "pure-token", + "display_text": "all", + "token": "ALL" + } + ] } ], "command_flags": [ + "admin", + "noscript", "loading", "stale" ] }, - "COMMAND GETKEYSANDFLAGS": { - "summary": "Extracts the key names and access flags for an arbitrary command.", - "since": "7.0.0", - "group": "server", - "complexity": "O(N) where N is the number of arguments to the command", + "CLIENT REPLY": { + "summary": "Instructs the server whether to reply to commands.", + "since": "3.2.0", + "group": "connection", + "complexity": "O(1)", "acl_categories": [ "@slow", "@connection" ], - "arity": -3, + "arity": 3, "arguments": [ { - "name": "command", - "type": "string", - "display_text": "command" - }, - { - "name": "arg", - "type": "string", - "display_text": "arg", - "optional": true, - "multiple": true + "name": "action", + "type": "oneof", + "arguments": [ + { + "name": "on", + "type": "pure-token", + "display_text": "on", + "token": "ON" + }, + { + "name": "off", + "type": "pure-token", + "display_text": "off", + "token": "OFF" + }, + { + "name": "skip", + "type": "pure-token", + "display_text": "skip", + "token": "SKIP" + } + ] } ], "command_flags": [ + "noscript", "loading", "stale" ] }, - "COMMAND HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "5.0.0", - "group": "server", + "CLIENT SETINFO": { + "summary": "Sets information specific to the client or connection.", + "since": "7.2.0", + "group": "connection", "complexity": "O(1)", "acl_categories": [ "@slow", "@connection" ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "COMMAND INFO": { - "summary": "Returns information about one, multiple or all commands.", - "since": "2.8.13", - "group": "server", - "complexity": "O(N) where N is the number of commands to look up", - "history": [ - [ - "7.0.0", - "Allowed to be called with no argument to get info on all commands." - ] - ], - "acl_categories": [ - "@slow", - "@connection" - ], - "arity": -2, + "arity": 4, "arguments": [ { - "name": "command-name", - "type": "string", - "display_text": "command-name", - "optional": true, - "multiple": true + "name": "attr", + "type": "oneof", + "arguments": [ + { + "name": "libname", + "type": "string", + "display_text": "libname", + "token": "LIB-NAME" + }, + { + "name": "libver", + "type": "string", + "display_text": "libver", + "token": "LIB-VER" + } + ] } ], "command_flags": [ + "noscript", "loading", "stale" ], "hints": [ - "nondeterministic_output_order" + "request_policy:all_nodes", + "response_policy:all_succeeded" ] }, - "COMMAND LIST": { - "summary": "Returns a list of command names.", - "since": "7.0.0", - "group": "server", - "complexity": "O(N) where N is the total number of Redis commands", + "CLIENT SETNAME": { + "summary": "Sets the connection name.", + "since": "2.6.9", + "group": "connection", + "complexity": "O(1)", "acl_categories": [ "@slow", "@connection" ], - "arity": -2, + "arity": 3, "arguments": [ { - "name": "filterby", - "type": "oneof", - "token": "FILTERBY", - "optional": true, - "arguments": [ - { - "name": "module-name", - "type": "string", - "display_text": "module-name", - "token": "MODULE" - }, - { - "name": "category", - "type": "string", - "display_text": "category", - "token": "ACLCAT" - }, - { - "name": "pattern", - "type": "pattern", - "display_text": "pattern", - "token": "PATTERN" - } - ] + "name": "connection-name", + "type": "string", + "display_text": "connection-name" } ], "command_flags": [ + "noscript", "loading", "stale" ], "hints": [ - "nondeterministic_output_order" + "request_policy:all_nodes", + "response_policy:all_succeeded" ] }, - "CONFIG": { - "summary": "A container for server configuration commands.", - "since": "2.0.0", - "group": "server", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" - ], - "arity": -2 - }, - "CONFIG GET": { - "summary": "Returns the effective values of configuration parameters.", - "since": "2.0.0", - "group": "server", - "complexity": "O(N) when N is the number of configuration parameters provided", - "history": [ - [ - "7.0.0", - "Added the ability to pass multiple pattern parameters in one call" - ] - ], + "CLIENT TRACKING": { + "summary": "Controls server-assisted client-side caching for the connection.", + "since": "6.0.0", + "group": "connection", + "complexity": "O(1). Some options may introduce additional complexity.", "acl_categories": [ - "@admin", "@slow", - "@dangerous" + "@connection" ], "arity": -3, "arguments": [ { - "name": "parameter", + "name": "status", + "type": "oneof", + "arguments": [ + { + "name": "on", + "type": "pure-token", + "display_text": "on", + "token": "ON" + }, + { + "name": "off", + "type": "pure-token", + "display_text": "off", + "token": "OFF" + } + ] + }, + { + "name": "client-id", + "type": "integer", + "display_text": "client-id", + "token": "REDIRECT", + "optional": true + }, + { + "name": "prefix", "type": "string", - "display_text": "parameter", - "multiple": true + "display_text": "prefix", + "token": "PREFIX", + "optional": true, + "multiple": true, + "multiple_token": true + }, + { + "name": "bcast", + "type": "pure-token", + "display_text": "bcast", + "token": "BCAST", + "optional": true + }, + { + "name": "optin", + "type": "pure-token", + "display_text": "optin", + "token": "OPTIN", + "optional": true + }, + { + "name": "optout", + "type": "pure-token", + "display_text": "optout", + "token": "OPTOUT", + "optional": true + }, + { + "name": "noloop", + "type": "pure-token", + "display_text": "noloop", + "token": "NOLOOP", + "optional": true } ], "command_flags": [ - "admin", "noscript", "loading", "stale" ] }, - "CONFIG HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "5.0.0", - "group": "server", + "CLIENT TRACKINGINFO": { + "summary": "Returns information about server-assisted client-side caching for the connection.", + "since": "6.2.0", + "group": "connection", "complexity": "O(1)", "acl_categories": [ - "@slow" + "@slow", + "@connection" ], "arity": 2, "command_flags": [ + "noscript", "loading", "stale" ] }, - "CONFIG RESETSTAT": { - "summary": "Resets the server's statistics.", - "since": "2.0.0", - "group": "server", - "complexity": "O(1)", + "CLIENT UNBLOCK": { + "summary": "Unblocks a client blocked by a blocking command from a different connection.", + "since": "5.0.0", + "group": "connection", + "complexity": "O(log N) where N is the number of client connections", "acl_categories": [ "@admin", "@slow", - "@dangerous" + "@dangerous", + "@connection" + ], + "arity": -3, + "arguments": [ + { + "name": "client-id", + "type": "integer", + "display_text": "client-id" + }, + { + "name": "unblock-type", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "timeout", + "type": "pure-token", + "display_text": "timeout", + "token": "TIMEOUT" + }, + { + "name": "error", + "type": "pure-token", + "display_text": "error", + "token": "ERROR" + } + ] + } ], - "arity": 2, "command_flags": [ "admin", "noscript", "loading", "stale" - ], - "hints": [ - "request_policy:all_nodes", - "response_policy:all_succeeded" ] }, - "CONFIG REWRITE": { - "summary": "Persists the effective configuration to file.", - "since": "2.8.0", - "group": "server", - "complexity": "O(1)", + "CLIENT UNPAUSE": { + "summary": "Resumes processing commands from paused clients.", + "since": "6.2.0", + "group": "connection", + "complexity": "O(N) Where N is the number of paused clients", "acl_categories": [ "@admin", "@slow", - "@dangerous" + "@dangerous", + "@connection" ], "arity": 2, "command_flags": [ @@ -4855,1765 +5258,1731 @@ "noscript", "loading", "stale" - ], - "hints": [ - "request_policy:all_nodes", - "response_policy:all_succeeded" ] }, - "CONFIG SET": { - "summary": "Sets configuration parameters in-flight.", - "since": "2.0.0", - "group": "server", - "complexity": "O(N) when N is the number of configuration parameters provided", - "history": [ - [ - "7.0.0", - "Added the ability to set multiple parameters in one call." - ] - ], - "acl_categories": [ - "@admin", - "@slow", + "CLUSTER": { + "summary": "A container for Redis Cluster commands.", + "since": "3.0.0", + "group": "cluster", + "complexity": "Depends on subcommand.", + "acl_categories": [ + "@slow" + ], + "arity": -2 + }, + "CLUSTER ADDSLOTS": { + "summary": "Assigns new hash slots to a node.", + "since": "3.0.0", + "group": "cluster", + "complexity": "O(N) where N is the total number of hash slot arguments", + "acl_categories": [ + "@admin", + "@slow", "@dangerous" ], - "arity": -4, + "arity": -3, "arguments": [ { - "name": "data", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "parameter", - "type": "string", - "display_text": "parameter" - }, - { - "name": "value", - "type": "string", - "display_text": "value" - } - ] + "name": "slot", + "type": "integer", + "display_text": "slot", + "multiple": true } ], "command_flags": [ "admin", - "noscript", - "loading", - "stale" - ], - "hints": [ - "request_policy:all_nodes", - "response_policy:all_succeeded" + "stale", + "no_async_loading" ] }, - "COPY": { - "summary": "Copies the value of a key to a new key.", - "since": "6.2.0", - "group": "generic", - "complexity": "O(N) worst case for collections, where N is the number of nested items. O(1) for string values.", + "CLUSTER ADDSLOTSRANGE": { + "summary": "Assigns new hash slot ranges to a node.", + "since": "7.0.0", + "group": "cluster", + "complexity": "O(N) where N is the total number of the slots between the start slot and end slot arguments.", "acl_categories": [ - "@keyspace", - "@write", - "@slow" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, - "update": true - } + "@admin", + "@slow", + "@dangerous" ], + "arity": -4, "arguments": [ { - "name": "source", - "type": "key", - "display_text": "source", - "key_spec_index": 0 - }, - { - "name": "destination", - "type": "key", - "display_text": "destination", - "key_spec_index": 1 - }, - { - "name": "destination-db", - "type": "integer", - "display_text": "destination-db", - "token": "DB", - "optional": true - }, - { - "name": "replace", - "type": "pure-token", - "display_text": "replace", - "token": "REPLACE", - "optional": true + "name": "range", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "start-slot", + "type": "integer", + "display_text": "start-slot" + }, + { + "name": "end-slot", + "type": "integer", + "display_text": "end-slot" + } + ] } ], "command_flags": [ - "write", - "denyoom" + "admin", + "stale", + "no_async_loading" ] }, - "DBSIZE": { - "summary": "Returns the number of keys in the database.", - "since": "1.0.0", - "group": "server", + "CLUSTER BUMPEPOCH": { + "summary": "Advances the cluster config epoch.", + "since": "3.0.0", + "group": "cluster", "complexity": "O(1)", "acl_categories": [ - "@keyspace", - "@read", - "@fast" + "@admin", + "@slow", + "@dangerous" ], - "arity": 1, + "arity": 2, "command_flags": [ - "readonly", - "fast" + "admin", + "stale", + "no_async_loading" ], "hints": [ - "request_policy:all_shards", - "response_policy:agg_sum" + "nondeterministic_output" ] }, - "DEBUG": { - "summary": "A container for debugging commands.", - "since": "1.0.0", - "group": "server", - "complexity": "Depends on subcommand.", + "CLUSTER COUNT-FAILURE-REPORTS": { + "summary": "Returns the number of active failure reports active for a node.", + "since": "3.0.0", + "group": "cluster", + "complexity": "O(N) where N is the number of failure reports", "acl_categories": [ "@admin", "@slow", "@dangerous" ], - "arity": -2, + "arity": 3, + "arguments": [ + { + "name": "node-id", + "type": "string", + "display_text": "node-id" + } + ], "command_flags": [ "admin", - "noscript", "loading", "stale" ], - "doc_flags": [ - "syscmd" + "hints": [ + "nondeterministic_output" ] }, - "DECR": { - "summary": "Decrements the integer value of a key by one. Uses 0 as initial value if the key doesn't exist.", - "since": "1.0.0", - "group": "string", + "CLUSTER COUNTKEYSINSLOT": { + "summary": "Returns the number of keys in a hash slot.", + "since": "3.0.0", + "group": "cluster", "complexity": "O(1)", "acl_categories": [ - "@write", - "@string", - "@fast" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } + "@slow" ], + "arity": 3, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "slot", + "type": "integer", + "display_text": "slot" } ], "command_flags": [ - "write", - "denyoom", - "fast" + "stale" ] }, - "DECRBY": { - "summary": "Decrements a number from the integer value of a key. Uses 0 as initial value if the key doesn't exist.", - "since": "1.0.0", - "group": "string", - "complexity": "O(1)", + "CLUSTER DELSLOTS": { + "summary": "Sets hash slots as unbound for a node.", + "since": "3.0.0", + "group": "cluster", + "complexity": "O(N) where N is the total number of hash slot arguments", "acl_categories": [ - "@write", - "@string", - "@fast" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } + "@admin", + "@slow", + "@dangerous" ], + "arity": -3, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "decrement", + "name": "slot", "type": "integer", - "display_text": "decrement" + "display_text": "slot", + "multiple": true } ], "command_flags": [ - "write", - "denyoom", - "fast" + "admin", + "stale", + "no_async_loading" ] }, - "DEL": { - "summary": "Deletes one or more keys.", - "since": "1.0.0", - "group": "generic", - "complexity": "O(N) where N is the number of keys that will be removed. When a key to remove holds a value other than a string, the individual complexity for this key is O(M) where M is the number of elements in the list, set, sorted set or hash. Removing a single key that holds a string value is O(1).", + "CLUSTER DELSLOTSRANGE": { + "summary": "Sets hash slot ranges as unbound for a node.", + "since": "7.0.0", + "group": "cluster", + "complexity": "O(N) where N is the total number of the slots between the start slot and end slot arguments.", "acl_categories": [ - "@keyspace", - "@write", - "@slow" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 0 - } - }, - "RM": true, - "delete": true - } + "@admin", + "@slow", + "@dangerous" ], + "arity": -4, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true + "name": "range", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "start-slot", + "type": "integer", + "display_text": "start-slot" + }, + { + "name": "end-slot", + "type": "integer", + "display_text": "end-slot" + } + ] } ], "command_flags": [ - "write" - ], - "hints": [ - "request_policy:multi_shard", - "response_policy:agg_sum" + "admin", + "stale", + "no_async_loading" ] }, - "DELEX": { - "summary": "Conditionally removes the specified key based on value or digest comparison.", - "since": "8.4.0", - "group": "string", - "complexity": "O(1) for IFEQ/IFNE, O(N) for IFDEQ/IFDNE where N is the length of the string value.", + "CLUSTER FAILOVER": { + "summary": "Forces a replica to perform a manual failover of its master.", + "since": "3.0.0", + "group": "cluster", + "complexity": "O(1)", "acl_categories": [ - "@write", - "@string", - "@fast" + "@admin", + "@slow", + "@dangerous" ], "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "delete": true, - "variable_flags": true - } - ], "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "condition", + "name": "options", "type": "oneof", "optional": true, "arguments": [ { - "name": "ifeq-value", - "type": "string", - "display_text": "ifeq-value", - "token": "IFEQ" - }, - { - "name": "ifne-value", - "type": "string", - "display_text": "ifne-value", - "token": "IFNE" - }, - { - "name": "ifdeq-digest", - "type": "integer", - "display_text": "ifdeq-digest", - "token": "IFDEQ" + "name": "force", + "type": "pure-token", + "display_text": "force", + "token": "FORCE" }, { - "name": "ifdne-digest", - "type": "integer", - "display_text": "ifdne-digest", - "token": "IFDNE" + "name": "takeover", + "type": "pure-token", + "display_text": "takeover", + "token": "TAKEOVER" } ] } ], "command_flags": [ - "write", - "fast" + "admin", + "stale", + "no_async_loading" ] }, - "DIGEST": { - "summary": "Returns the XXH3 hash of a string value.", - "since": "8.4.0", - "group": "string", - "complexity": "O(N) where N is the length of the string value.", + "CLUSTER FLUSHSLOTS": { + "summary": "Deletes all slots information from a node.", + "since": "3.0.0", + "group": "cluster", + "complexity": "O(1)", "acl_categories": [ - "@read", - "@string", - "@fast" + "@admin", + "@slow", + "@dangerous" ], "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } + "command_flags": [ + "admin", + "stale", + "no_async_loading" + ] + }, + "CLUSTER FORGET": { + "summary": "Removes a node from the nodes table.", + "since": "3.0.0", + "group": "cluster", + "complexity": "O(1)", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" ], + "arity": 3, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "node-id", + "type": "string", + "display_text": "node-id" } ], "command_flags": [ - "readonly", - "fast" + "admin", + "stale", + "no_async_loading" ] }, - "DISCARD": { - "summary": "Discards a transaction.", - "since": "2.0.0", - "group": "transactions", - "complexity": "O(N), when N is the number of queued commands", - "acl_categories": [ - "@fast", - "@transaction" - ], - "arity": 1, - "command_flags": [ - "noscript", - "loading", - "stale", - "fast", - "allow_busy" - ] - }, - "DUMP": { - "summary": "Returns a serialized representation of the value stored at a key.", - "since": "2.6.0", - "group": "generic", - "complexity": "O(1) to access the key and additional O(N*M) to serialize it, where N is the number of Redis objects composing the value and M their average size. For small string values the time complexity is thus O(1)+O(1*M) where M is small, so simply O(1).", + "CLUSTER GETKEYSINSLOT": { + "summary": "Returns the key names in a hash slot.", + "since": "3.0.0", + "group": "cluster", + "complexity": "O(N) where N is the number of requested keys", "acl_categories": [ - "@keyspace", - "@read", "@slow" ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], + "arity": 4, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "slot", + "type": "integer", + "display_text": "slot" + }, + { + "name": "count", + "type": "integer", + "display_text": "count" } ], "command_flags": [ - "readonly" + "stale" ], "hints": [ "nondeterministic_output" ] }, - "ECHO": { - "summary": "Returns the given string.", - "since": "1.0.0", - "group": "connection", + "CLUSTER HELP": { + "summary": "Returns helpful text about the different subcommands.", + "since": "5.0.0", + "group": "cluster", "complexity": "O(1)", "acl_categories": [ - "@fast", - "@connection" + "@slow" ], "arity": 2, - "arguments": [ - { - "name": "message", - "type": "string", - "display_text": "message" - } - ], "command_flags": [ "loading", - "stale", - "fast" + "stale" ] }, - "EVAL": { - "summary": "Executes a server-side Lua script.", - "since": "2.6.0", - "group": "scripting", - "complexity": "Depends on the script that is executed.", + "CLUSTER INFO": { + "summary": "Returns information about the state of a node.", + "since": "3.0.0", + "group": "cluster", + "complexity": "O(1)", "acl_categories": [ - "@slow", - "@scripting" + "@slow" ], - "arity": -3, - "key_specs": [ - { - "notes": "We cannot tell how the keys will be used so we assume the worst, RW and UPDATE", - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RW": true, - "access": true, - "update": true - } + "arity": 2, + "command_flags": [ + "loading", + "stale" + ], + "hints": [ + "nondeterministic_output" + ] + }, + "CLUSTER KEYSLOT": { + "summary": "Returns the hash slot for a key.", + "since": "3.0.0", + "group": "cluster", + "complexity": "O(N) where N is the number of bytes in the key", + "acl_categories": [ + "@slow" ], + "arity": 3, "arguments": [ - { - "name": "script", - "type": "string", - "display_text": "script" - }, - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, { "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "optional": true, - "multiple": true - }, - { - "name": "arg", "type": "string", - "display_text": "arg", - "optional": true, - "multiple": true + "display_text": "key" } ], "command_flags": [ - "noscript", - "stale", - "skip_monitor", - "no_mandatory_keys", - "movablekeys" + "loading", + "stale" ] }, - "EVALSHA": { - "summary": "Executes a server-side Lua script by SHA1 digest.", - "since": "2.6.0", - "group": "scripting", - "complexity": "Depends on the script that is executed.", + "CLUSTER LINKS": { + "summary": "Returns a list of all TCP links to and from peer nodes.", + "since": "7.0.0", + "group": "cluster", + "complexity": "O(N) where N is the total number of Cluster nodes", "acl_categories": [ - "@slow", - "@scripting" + "@slow" ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RW": true, - "access": true, - "update": true - } + "arity": 2, + "command_flags": [ + "loading", + "stale" + ], + "hints": [ + "nondeterministic_output" + ] + }, + "CLUSTER MEET": { + "summary": "Forces a node to handshake with another node.", + "since": "3.0.0", + "group": "cluster", + "complexity": "O(1)", + "history": [ + [ + "4.0.0", + "Added the optional `cluster_bus_port` argument." + ] + ], + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" ], + "arity": -4, "arguments": [ { - "name": "sha1", + "name": "ip", "type": "string", - "display_text": "sha1" + "display_text": "ip" }, { - "name": "numkeys", + "name": "port", "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "optional": true, - "multiple": true + "display_text": "port" }, { - "name": "arg", - "type": "string", - "display_text": "arg", - "optional": true, - "multiple": true + "name": "cluster-bus-port", + "type": "integer", + "display_text": "cluster-bus-port", + "since": "4.0.0", + "optional": true } ], "command_flags": [ - "noscript", + "admin", "stale", - "skip_monitor", - "no_mandatory_keys", - "movablekeys" + "no_async_loading" ] }, - "EVALSHA_RO": { - "summary": "Executes a read-only server-side Lua script by SHA1 digest.", - "since": "7.0.0", - "group": "scripting", - "complexity": "Depends on the script that is executed.", + "CLUSTER MIGRATION": { + "summary": "Start, monitor and cancel slot migration.", + "since": "8.4.0", + "group": "cluster", + "complexity": "O(N) where N is the total number of the slots between the start slot and end slot arguments.", "acl_categories": [ + "@admin", "@slow", - "@scripting" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RO": true, - "access": true - } + "@dangerous" ], + "arity": -4, "arguments": [ { - "name": "sha1", - "type": "string", - "display_text": "sha1" - }, - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "optional": true, - "multiple": true - }, - { - "name": "arg", - "type": "string", - "display_text": "arg", - "optional": true, - "multiple": true + "name": "subcommand", + "type": "oneof", + "arguments": [ + { + "name": "import", + "type": "block", + "token": "IMPORT", + "multiple": true, + "arguments": [ + { + "name": "start-slot", + "type": "integer", + "display_text": "start-slot" + }, + { + "name": "end-slot", + "type": "integer", + "display_text": "end-slot" + } + ] + }, + { + "name": "cancel", + "type": "oneof", + "token": "CANCEL", + "arguments": [ + { + "name": "task-id", + "type": "string", + "display_text": "task-id", + "token": "ID" + }, + { + "name": "all", + "type": "pure-token", + "display_text": "all", + "token": "ALL" + } + ] + }, + { + "name": "status", + "type": "oneof", + "token": "STATUS", + "arguments": [ + { + "name": "task-id", + "type": "string", + "display_text": "task-id", + "token": "ID", + "optional": true + }, + { + "name": "all", + "type": "pure-token", + "display_text": "all", + "token": "ALL", + "optional": true + } + ] + } + ] } ], "command_flags": [ - "readonly", - "noscript", + "admin", "stale", - "skip_monitor", - "no_mandatory_keys", - "movablekeys" + "no_async_loading" ] }, - "EVAL_RO": { - "summary": "Executes a read-only server-side Lua script.", - "since": "7.0.0", - "group": "scripting", - "complexity": "Depends on the script that is executed.", + "CLUSTER MYID": { + "summary": "Returns the ID of a node.", + "since": "3.0.0", + "group": "cluster", + "complexity": "O(1)", "acl_categories": [ - "@slow", - "@scripting" - ], - "arity": -3, - "key_specs": [ - { - "notes": "We cannot tell how the keys will be used so we assume the worst, RO and ACCESS", - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "script", - "type": "string", - "display_text": "script" - }, - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "optional": true, - "multiple": true - }, - { - "name": "arg", - "type": "string", - "display_text": "arg", - "optional": true, - "multiple": true - } + "@slow" ], + "arity": 2, "command_flags": [ - "readonly", - "noscript", - "stale", - "skip_monitor", - "no_mandatory_keys", - "movablekeys" + "loading", + "stale" ] }, - "EXEC": { - "summary": "Executes all commands in a transaction.", - "since": "1.2.0", - "group": "transactions", - "complexity": "Depends on commands in the transaction", + "CLUSTER MYSHARDID": { + "summary": "Returns the shard ID of a node.", + "since": "7.2.0", + "group": "cluster", + "complexity": "O(1)", "acl_categories": [ - "@slow", - "@transaction" + "@slow" ], - "arity": 1, + "arity": 2, "command_flags": [ - "noscript", "loading", - "stale", - "skip_slowlog" + "stale" + ], + "hints": [ + "nondeterministic_output" ] }, - "EXISTS": { - "summary": "Determines whether one or more keys exist.", - "since": "1.0.0", - "group": "generic", - "complexity": "O(N) where N is the number of keys to check.", - "history": [ - [ - "3.0.3", - "Accepts multiple `key` arguments." - ] + "CLUSTER NODES": { + "summary": "Returns the cluster configuration for a node.", + "since": "3.0.0", + "group": "cluster", + "complexity": "O(N) where N is the total number of Cluster nodes", + "acl_categories": [ + "@slow" + ], + "arity": 2, + "command_flags": [ + "loading", + "stale" ], + "hints": [ + "nondeterministic_output" + ] + }, + "CLUSTER REPLICAS": { + "summary": "Lists the replica nodes of a master node.", + "since": "5.0.0", + "group": "cluster", + "complexity": "O(N) where N is the number of replicas.", "acl_categories": [ - "@keyspace", - "@read", - "@fast" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 0 - } - }, - "RO": true - } + "@admin", + "@slow", + "@dangerous" ], + "arity": 3, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true + "name": "node-id", + "type": "string", + "display_text": "node-id" } ], "command_flags": [ - "readonly", - "fast" + "admin", + "loading", + "stale" ], "hints": [ - "request_policy:multi_shard", - "response_policy:agg_sum" + "nondeterministic_output" ] }, - "EXPIRE": { - "summary": "Sets the expiration time of a key in seconds.", - "since": "1.0.0", - "group": "generic", + "CLUSTER REPLICATE": { + "summary": "Configure a node as replica of a master node.", + "since": "3.0.0", + "group": "cluster", "complexity": "O(1)", - "history": [ - [ - "7.0.0", - "Added options: `NX`, `XX`, `GT` and `LT`." - ] - ], "acl_categories": [ - "@keyspace", - "@write", - "@fast" + "@admin", + "@slow", + "@dangerous" ], - "arity": -3, - "key_specs": [ + "arity": 3, + "arguments": [ { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true + "name": "node-id", + "type": "string", + "display_text": "node-id" } ], + "command_flags": [ + "admin", + "stale", + "no_async_loading" + ] + }, + "CLUSTER RESET": { + "summary": "Resets a node.", + "since": "3.0.0", + "group": "cluster", + "complexity": "O(N) where N is the number of known nodes. The command may execute a FLUSHALL as a side effect.", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" + ], + "arity": -2, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "seconds", - "type": "integer", - "display_text": "seconds" - }, - { - "name": "condition", + "name": "reset-type", "type": "oneof", - "since": "7.0.0", "optional": true, "arguments": [ { - "name": "nx", - "type": "pure-token", - "display_text": "nx", - "token": "NX" - }, - { - "name": "xx", - "type": "pure-token", - "display_text": "xx", - "token": "XX" - }, - { - "name": "gt", + "name": "hard", "type": "pure-token", - "display_text": "gt", - "token": "GT" + "display_text": "hard", + "token": "HARD" }, { - "name": "lt", + "name": "soft", "type": "pure-token", - "display_text": "lt", - "token": "LT" + "display_text": "soft", + "token": "SOFT" } ] } ], "command_flags": [ - "write", - "fast" + "admin", + "noscript", + "stale" ] }, - "EXPIREAT": { - "summary": "Sets the expiration time of a key to a Unix timestamp.", - "since": "1.2.0", - "group": "generic", + "CLUSTER SAVECONFIG": { + "summary": "Forces a node to save the cluster configuration to disk.", + "since": "3.0.0", + "group": "cluster", "complexity": "O(1)", - "history": [ - [ - "7.0.0", - "Added options: `NX`, `XX`, `GT` and `LT`." - ] + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" ], + "arity": 2, + "command_flags": [ + "admin", + "stale", + "no_async_loading" + ] + }, + "CLUSTER SET-CONFIG-EPOCH": { + "summary": "Sets the configuration epoch for a new node.", + "since": "3.0.0", + "group": "cluster", + "complexity": "O(1)", "acl_categories": [ - "@keyspace", - "@write", - "@fast" + "@admin", + "@slow", + "@dangerous" ], - "arity": -3, - "key_specs": [ + "arity": 3, + "arguments": [ { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true + "name": "config-epoch", + "type": "integer", + "display_text": "config-epoch" } ], + "command_flags": [ + "admin", + "stale", + "no_async_loading" + ] + }, + "CLUSTER SETSLOT": { + "summary": "Binds a hash slot to a node.", + "since": "3.0.0", + "group": "cluster", + "complexity": "O(1)", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" + ], + "arity": -4, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "unix-time-seconds", - "type": "unix-time", - "display_text": "unix-time-seconds" + "name": "slot", + "type": "integer", + "display_text": "slot" }, { - "name": "condition", + "name": "subcommand", "type": "oneof", - "since": "7.0.0", - "optional": true, "arguments": [ { - "name": "nx", - "type": "pure-token", - "display_text": "nx", - "token": "NX" + "name": "importing", + "type": "string", + "display_text": "node-id", + "token": "IMPORTING" }, { - "name": "xx", - "type": "pure-token", - "display_text": "xx", - "token": "XX" + "name": "migrating", + "type": "string", + "display_text": "node-id", + "token": "MIGRATING" }, { - "name": "gt", - "type": "pure-token", - "display_text": "gt", - "token": "GT" + "name": "node", + "type": "string", + "display_text": "node-id", + "token": "NODE" }, { - "name": "lt", + "name": "stable", "type": "pure-token", - "display_text": "lt", - "token": "LT" + "display_text": "stable", + "token": "STABLE" } ] } ], "command_flags": [ - "write", - "fast" + "admin", + "stale", + "no_async_loading" ] }, - "EXPIRETIME": { - "summary": "Returns the expiration time of a key as a Unix timestamp.", + "CLUSTER SHARDS": { + "summary": "Returns the mapping of cluster slots to shards.", "since": "7.0.0", - "group": "generic", - "complexity": "O(1)", + "group": "cluster", + "complexity": "O(N) where N is the total number of cluster nodes", "acl_categories": [ - "@keyspace", - "@read", - "@fast" + "@slow" ], "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } + "command_flags": [ + "loading", + "stale" + ], + "hints": [ + "nondeterministic_output" + ] + }, + "CLUSTER SLAVES": { + "summary": "Lists the replica nodes of a master node.", + "since": "3.0.0", + "group": "cluster", + "complexity": "O(N) where N is the number of replicas.", + "deprecated_since": "5.0.0", + "replaced_by": "`CLUSTER REPLICAS`", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" ], + "arity": 3, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "node-id", + "type": "string", + "display_text": "node-id" } ], "command_flags": [ - "readonly", - "fast" + "admin", + "loading", + "stale" + ], + "doc_flags": [ + "deprecated" + ], + "hints": [ + "nondeterministic_output" ] }, - "FAILOVER": { - "summary": "Starts a coordinated failover from a server to one of its replicas.", - "since": "6.2.0", - "group": "server", - "complexity": "O(1)", + "CLUSTER SLOT-STATS": { + "summary": "Return an array of slot usage statistics for slots assigned to the current node.", + "since": "8.2.0", + "group": "cluster", + "complexity": "O(N) where N is the total number of slots based on arguments. O(N*log(N)) with ORDERBY subcommand.", "acl_categories": [ - "@admin", - "@slow", - "@dangerous" + "@slow" ], - "arity": -1, + "arity": -4, "arguments": [ { - "name": "target", - "type": "block", - "token": "TO", - "optional": true, + "name": "filter", + "type": "oneof", "arguments": [ { - "name": "host", - "type": "string", - "display_text": "host" - }, - { - "name": "port", - "type": "integer", - "display_text": "port" + "name": "slotsrange", + "type": "block", + "token": "SLOTSRANGE", + "arguments": [ + { + "name": "start-slot", + "type": "integer", + "display_text": "start-slot" + }, + { + "name": "end-slot", + "type": "integer", + "display_text": "end-slot" + } + ] }, { - "name": "force", - "type": "pure-token", - "display_text": "force", - "token": "FORCE", - "optional": true + "name": "orderby", + "type": "block", + "token": "ORDERBY", + "arguments": [ + { + "name": "metric", + "type": "string", + "display_text": "metric" + }, + { + "name": "limit", + "type": "integer", + "display_text": "limit", + "token": "LIMIT", + "optional": true + }, + { + "name": "order", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "asc", + "type": "pure-token", + "display_text": "asc", + "token": "ASC" + }, + { + "name": "desc", + "type": "pure-token", + "display_text": "desc", + "token": "DESC" + } + ] + } + ] } ] - }, - { - "name": "abort", - "type": "pure-token", - "display_text": "abort", - "token": "ABORT", - "optional": true - }, - { - "name": "milliseconds", - "type": "integer", - "display_text": "milliseconds", - "token": "TIMEOUT", - "optional": true } ], "command_flags": [ - "admin", - "noscript", + "loading", "stale" + ], + "hints": [ + "nondeterministic_output", + "request_policy:all_shards" ] }, - "FCALL": { - "summary": "Invokes a function.", - "since": "7.0.0", - "group": "scripting", - "complexity": "Depends on the function that is executed.", + "CLUSTER SLOTS": { + "summary": "Returns the mapping of cluster slots to nodes.", + "since": "3.0.0", + "group": "cluster", + "complexity": "O(N) where N is the total number of Cluster nodes", + "deprecated_since": "7.0.0", + "replaced_by": "`CLUSTER SHARDS`", + "history": [ + [ + "4.0.0", + "Added node IDs." + ], + [ + "7.0.0", + "Added additional networking metadata field." + ] + ], + "acl_categories": [ + "@slow" + ], + "arity": 2, + "command_flags": [ + "loading", + "stale" + ], + "doc_flags": [ + "deprecated" + ], + "hints": [ + "nondeterministic_output" + ] + }, + "CLUSTER SYNCSLOTS": { + "summary": "Internal command for atomic slot migration protocol between cluster nodes.", + "since": "8.4.0", + "group": "cluster", + "complexity": "O(1)", "acl_categories": [ + "@admin", "@slow", - "@scripting" + "@dangerous" ], "arity": -3, - "key_specs": [ - { - "notes": "We cannot tell how the keys will be used so we assume the worst, RW and UPDATE", - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RW": true, - "access": true, - "update": true - } - ], "arguments": [ { - "name": "function", - "type": "string", - "display_text": "function" - }, - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "optional": true, - "multiple": true - }, - { - "name": "arg", - "type": "string", - "display_text": "arg", - "optional": true, - "multiple": true + "name": "subcommand", + "type": "oneof", + "arguments": [ + { + "name": "sync", + "type": "block", + "token": "SYNC", + "arguments": [ + { + "name": "task-id", + "type": "string", + "display_text": "task-id" + }, + { + "name": "slot-range", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "start-slot", + "type": "integer", + "display_text": "start-slot" + }, + { + "name": "end-slot", + "type": "integer", + "display_text": "end-slot" + } + ] + } + ] + }, + { + "name": "task-id", + "type": "string", + "display_text": "task-id", + "token": "RDBCHANNEL" + }, + { + "name": "snapshot-eof", + "type": "pure-token", + "display_text": "snapshot-eof", + "token": "SNAPSHOT-EOF" + }, + { + "name": "stream-eof", + "type": "pure-token", + "display_text": "stream-eof", + "token": "STREAM-EOF" + }, + { + "name": "ack", + "type": "block", + "token": "ACK", + "arguments": [ + { + "name": "state", + "type": "string", + "display_text": "state" + }, + { + "name": "offset", + "type": "integer", + "display_text": "offset" + } + ] + }, + { + "name": "error", + "type": "string", + "display_text": "error", + "token": "FAIL" + }, + { + "name": "conf", + "type": "block", + "token": "CONF", + "arguments": [ + { + "name": "option", + "type": "string", + "display_text": "option", + "multiple": true + }, + { + "name": "value", + "type": "string", + "display_text": "value", + "multiple": true + } + ] + } + ] } ], "command_flags": [ - "noscript", + "admin", "stale", - "skip_monitor", - "no_mandatory_keys", - "movablekeys" + "no_async_loading" + ], + "hints": [ + "nondeterministic_output" ] }, - "FCALL_RO": { - "summary": "Invokes a read-only function.", - "since": "7.0.0", - "group": "scripting", - "complexity": "Depends on the function that is executed.", + "CMS.INCRBY": { + "summary": "Increases the count of one or more items by increment", + "since": "2.0.0", + "group": "module", + "complexity": "O(n) where n is the number of items", "acl_categories": [ - "@slow", - "@scripting" + "@write", + "@cms" ], - "arity": -3, + "arity": -4, "key_specs": [ { - "notes": "We cannot tell how the keys will be used so we assume the worst, RO and ACCESS", "begin_search": { "type": "index", "spec": { - "index": 2 + "index": 1 } }, "find_keys": { - "type": "keynum", + "type": "range", "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 + "lastkey": 0, + "keystep": 1, + "limit": 0 } }, - "RO": true, - "access": true + "RW": true } ], "arguments": [ - { - "name": "function", - "type": "string", - "display_text": "function" - }, - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, { "name": "key", "type": "key", "display_text": "key", - "key_spec_index": 0, - "optional": true, - "multiple": true + "key_spec_index": 0 }, { - "name": "arg", - "type": "string", - "display_text": "arg", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "readonly", - "noscript", - "stale", - "skip_monitor", - "no_mandatory_keys", - "movablekeys" - ] - }, - "FLUSHALL": { - "summary": "Removes all keys from all databases.", - "since": "1.0.0", - "group": "server", - "complexity": "O(N) where N is the total number of keys in all databases", - "history": [ - [ - "4.0.0", - "Added the `ASYNC` flushing mode modifier." - ], - [ - "6.2.0", - "Added the `SYNC` flushing mode modifier." - ] - ], - "acl_categories": [ - "@keyspace", - "@write", - "@slow", - "@dangerous" - ], - "arity": -1, - "arguments": [ - { - "name": "flush-type", - "type": "oneof", - "optional": true, + "name": "items", + "type": "block", + "multiple": true, "arguments": [ { - "name": "async", - "type": "pure-token", - "display_text": "async", - "token": "ASYNC", - "since": "4.0.0" + "name": "item", + "type": "string", + "display_text": "item" }, { - "name": "sync", - "type": "pure-token", - "display_text": "sync", - "token": "SYNC", - "since": "6.2.0" + "name": "increment", + "type": "integer", + "display_text": "increment" } ] } ], "command_flags": [ - "write" + "write", + "denyoom", + "module" ], - "hints": [ - "request_policy:all_shards", - "response_policy:all_succeeded" - ] + "module": "bf" }, - "FLUSHDB": { - "summary": "Remove all keys from the current database.", - "since": "1.0.0", - "group": "server", - "complexity": "O(N) where N is the number of keys in the selected database", - "history": [ - [ - "4.0.0", - "Added the `ASYNC` flushing mode modifier." - ], - [ - "6.2.0", - "Added the `SYNC` flushing mode modifier." - ] - ], + "CMS.INFO": { + "summary": "Returns information about a sketch", + "since": "2.0.0", + "group": "module", + "complexity": "O(1)", "acl_categories": [ - "@keyspace", - "@write", - "@slow", - "@dangerous" + "@read", + "@fast", + "@cms" ], - "arity": -1, - "arguments": [ + "arity": 2, + "key_specs": [ { - "name": "flush-type", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "async", - "type": "pure-token", - "display_text": "async", - "token": "ASYNC", - "since": "4.0.0" - }, - { - "name": "sync", - "type": "pure-token", - "display_text": "sync", - "token": "SYNC", - "since": "6.2.0" + "begin_search": { + "type": "index", + "spec": { + "index": 1 } - ] + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 } ], "command_flags": [ - "write" + "readonly", + "module" ], "hints": [ - "request_policy:all_shards", - "response_policy:all_succeeded" - ] - }, - "FUNCTION": { - "summary": "A container for function commands.", - "since": "7.0.0", - "group": "scripting", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" + "dont_cache" ], - "arity": -2 + "module": "bf" }, - "FUNCTION DELETE": { - "summary": "Deletes a library and its functions.", - "since": "7.0.0", - "group": "scripting", + "CMS.INITBYDIM": { + "summary": "Initializes a Count-Min Sketch to dimensions specified by user", + "since": "2.0.0", + "group": "module", "complexity": "O(1)", "acl_categories": [ "@write", - "@slow", - "@scripting" + "@fast", + "@cms" + ], + "arity": 4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true + } ], - "arity": 3, "arguments": [ { - "name": "library-name", - "type": "string", - "display_text": "library-name" + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "width", + "type": "integer", + "display_text": "width" + }, + { + "name": "depth", + "type": "integer", + "display_text": "depth" } ], "command_flags": [ "write", - "noscript" + "denyoom", + "module" ], - "hints": [ - "request_policy:all_shards", - "response_policy:all_succeeded" - ] + "module": "bf" }, - "FUNCTION DUMP": { - "summary": "Dumps all libraries into a serialized binary payload.", - "since": "7.0.0", - "group": "scripting", - "complexity": "O(N) where N is the number of functions", + "CMS.INITBYPROB": { + "summary": "Initializes a Count-Min Sketch to accommodate requested tolerances.", + "since": "2.0.0", + "group": "module", + "complexity": "O(1)", "acl_categories": [ - "@slow", - "@scripting" + "@write", + "@fast", + "@cms" + ], + "arity": 4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "error", + "type": "double", + "display_text": "error" + }, + { + "name": "probability", + "type": "double", + "display_text": "probability" + } ], - "arity": 2, "command_flags": [ - "noscript" - ] + "write", + "denyoom", + "module" + ], + "module": "bf" }, - "FUNCTION FLUSH": { - "summary": "Deletes all libraries and functions.", - "since": "7.0.0", - "group": "scripting", - "complexity": "O(N) where N is the number of functions deleted", + "CMS.MERGE": { + "summary": "Merges several sketches into one sketch", + "since": "2.0.0", + "group": "module", + "complexity": "O(n) where n is the number of sketches", "acl_categories": [ "@write", - "@slow", - "@scripting" + "@cms" + ], + "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true + } ], - "arity": -2, "arguments": [ { - "name": "flush-type", - "type": "oneof", + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "numKeys", + "type": "integer", + "display_text": "numKeys" + }, + { + "name": "source", + "type": "key", + "display_text": "source", + "key_spec_index": 0, + "multiple": true + }, + { + "name": "weights", + "type": "block", "optional": true, "arguments": [ { - "name": "async", + "name": "weights", "type": "pure-token", - "display_text": "async", - "token": "ASYNC" + "display_text": "weights", + "token": "WEIGHTS" }, { - "name": "sync", - "type": "pure-token", - "display_text": "sync", - "token": "SYNC" + "name": "weight", + "type": "double", + "display_text": "weight", + "multiple": true } ] } ], "command_flags": [ "write", - "noscript" - ], - "hints": [ - "request_policy:all_shards", - "response_policy:all_succeeded" - ] - }, - "FUNCTION HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "7.0.0", - "group": "scripting", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@scripting" + "denyoom", + "module" ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] + "module": "bf" }, - "FUNCTION KILL": { - "summary": "Terminates a function during execution.", - "since": "7.0.0", - "group": "scripting", - "complexity": "O(1)", + "CMS.QUERY": { + "summary": "Returns the count for one or more items in a sketch", + "since": "2.0.0", + "group": "module", + "complexity": "O(n) where n is the number of items", "acl_categories": [ - "@slow", - "@scripting" - ], - "arity": 2, - "command_flags": [ - "noscript", - "allow_busy" + "@read", + "@cms" ], - "hints": [ - "request_policy:all_shards", - "response_policy:one_succeeded" - ] - }, - "FUNCTION LIST": { - "summary": "Returns information about all libraries.", - "since": "7.0.0", - "group": "scripting", - "complexity": "O(N) where N is the number of functions", - "acl_categories": [ - "@slow", - "@scripting" + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } ], - "arity": -2, "arguments": [ { - "name": "library-name-pattern", - "type": "string", - "display_text": "library-name-pattern", - "token": "LIBRARYNAME", - "optional": true + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 }, { - "name": "withcode", - "type": "pure-token", - "display_text": "withcode", - "token": "WITHCODE", - "optional": true + "name": "item", + "type": "string", + "display_text": "item", + "multiple": true } ], "command_flags": [ - "noscript" + "readonly", + "module" + ], + "module": "bf" + }, + "COMMAND": { + "summary": "Returns detailed information about all commands.", + "since": "2.8.13", + "group": "server", + "complexity": "O(N) where N is the total number of Redis commands", + "acl_categories": [ + "@slow", + "@connection" + ], + "arity": -1, + "command_flags": [ + "loading", + "stale" ], "hints": [ "nondeterministic_output_order" ] }, - "FUNCTION LOAD": { - "summary": "Creates a library.", + "COMMAND COUNT": { + "summary": "Returns a count of commands.", + "since": "2.8.13", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@slow", + "@connection" + ], + "arity": 2, + "command_flags": [ + "loading", + "stale" + ] + }, + "COMMAND DOCS": { + "summary": "Returns documentary information about one, multiple or all commands.", "since": "7.0.0", - "group": "scripting", - "complexity": "O(1) (considering compilation time is redundant)", + "group": "server", + "complexity": "O(N) where N is the number of commands to look up", "acl_categories": [ - "@write", "@slow", - "@scripting" + "@connection" + ], + "arity": -2, + "arguments": [ + { + "name": "command-name", + "type": "string", + "display_text": "command-name", + "optional": true, + "multiple": true + } + ], + "command_flags": [ + "loading", + "stale" + ], + "hints": [ + "nondeterministic_output_order" + ] + }, + "COMMAND GETKEYS": { + "summary": "Extracts the key names from an arbitrary command.", + "since": "2.8.13", + "group": "server", + "complexity": "O(N) where N is the number of arguments to the command", + "acl_categories": [ + "@slow", + "@connection" ], "arity": -3, "arguments": [ { - "name": "replace", - "type": "pure-token", - "display_text": "replace", - "token": "REPLACE", - "optional": true + "name": "command", + "type": "string", + "display_text": "command" }, { - "name": "function-code", + "name": "arg", "type": "string", - "display_text": "function-code" + "display_text": "arg", + "optional": true, + "multiple": true } ], "command_flags": [ - "write", - "denyoom", - "noscript" - ], - "hints": [ - "request_policy:all_shards", - "response_policy:all_succeeded" + "loading", + "stale" ] }, - "FUNCTION RESTORE": { - "summary": "Restores all libraries from a payload.", + "COMMAND GETKEYSANDFLAGS": { + "summary": "Extracts the key names and access flags for an arbitrary command.", "since": "7.0.0", - "group": "scripting", - "complexity": "O(N) where N is the number of functions on the payload", + "group": "server", + "complexity": "O(N) where N is the number of arguments to the command", "acl_categories": [ - "@write", "@slow", - "@scripting" + "@connection" ], "arity": -3, "arguments": [ { - "name": "serialized-value", + "name": "command", "type": "string", - "display_text": "serialized-value" + "display_text": "command" }, { - "name": "policy", - "type": "oneof", + "name": "arg", + "type": "string", + "display_text": "arg", "optional": true, - "arguments": [ - { - "name": "flush", - "type": "pure-token", - "display_text": "flush", - "token": "FLUSH" - }, - { - "name": "append", - "type": "pure-token", - "display_text": "append", - "token": "APPEND" - }, - { - "name": "replace", - "type": "pure-token", - "display_text": "replace", - "token": "REPLACE" - } - ] + "multiple": true } ], "command_flags": [ - "write", - "denyoom", - "noscript" - ], - "hints": [ - "request_policy:all_shards", - "response_policy:all_succeeded" + "loading", + "stale" ] }, - "FUNCTION STATS": { - "summary": "Returns information about a function during execution.", - "since": "7.0.0", - "group": "scripting", + "COMMAND HELP": { + "summary": "Returns helpful text about the different subcommands.", + "since": "5.0.0", + "group": "server", "complexity": "O(1)", "acl_categories": [ "@slow", - "@scripting" + "@connection" ], "arity": 2, "command_flags": [ - "noscript", - "allow_busy" - ], - "hints": [ - "nondeterministic_output", - "request_policy:all_shards", - "response_policy:special" + "loading", + "stale" ] }, - "GEOADD": { - "summary": "Adds one or more members to a geospatial index. The key is created if it doesn't exist.", - "since": "3.2.0", - "group": "geo", - "complexity": "O(log(N)) for each item added, where N is the number of elements in the sorted set.", + "COMMAND INFO": { + "summary": "Returns information about one, multiple or all commands.", + "since": "2.8.13", + "group": "server", + "complexity": "O(N) where N is the number of commands to look up", "history": [ [ - "6.2.0", - "Added the `CH`, `NX` and `XX` options." + "7.0.0", + "Allowed to be called with no argument to get info on all commands." ] ], "acl_categories": [ - "@write", - "@geo", - "@slow" - ], - "arity": -5, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } + "@slow", + "@connection" ], + "arity": -2, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "condition", - "type": "oneof", - "since": "6.2.0", + "name": "command-name", + "type": "string", + "display_text": "command-name", "optional": true, - "arguments": [ - { - "name": "nx", - "type": "pure-token", - "display_text": "nx", - "token": "NX" + "multiple": true + } + ], + "command_flags": [ + "loading", + "stale" + ], + "hints": [ + "nondeterministic_output_order" + ] + }, + "COMMAND LIST": { + "summary": "Returns a list of command names.", + "since": "7.0.0", + "group": "server", + "complexity": "O(N) where N is the total number of Redis commands", + "acl_categories": [ + "@slow", + "@connection" + ], + "arity": -2, + "arguments": [ + { + "name": "filterby", + "type": "oneof", + "token": "FILTERBY", + "optional": true, + "arguments": [ + { + "name": "module-name", + "type": "string", + "display_text": "module-name", + "token": "MODULE" }, { - "name": "xx", - "type": "pure-token", - "display_text": "xx", - "token": "XX" + "name": "category", + "type": "string", + "display_text": "category", + "token": "ACLCAT" + }, + { + "name": "pattern", + "type": "pattern", + "display_text": "pattern", + "token": "PATTERN" } ] - }, + } + ], + "command_flags": [ + "loading", + "stale" + ], + "hints": [ + "nondeterministic_output_order" + ] + }, + "CONFIG": { + "summary": "A container for server configuration commands.", + "since": "2.0.0", + "group": "server", + "complexity": "Depends on subcommand.", + "acl_categories": [ + "@slow" + ], + "arity": -2 + }, + "CONFIG GET": { + "summary": "Returns the effective values of configuration parameters.", + "since": "2.0.0", + "group": "server", + "complexity": "O(N) when N is the number of configuration parameters provided", + "history": [ + [ + "7.0.0", + "Added the ability to pass multiple pattern parameters in one call" + ] + ], + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" + ], + "arity": -3, + "arguments": [ { - "name": "change", - "type": "pure-token", - "display_text": "change", - "token": "CH", - "since": "6.2.0", - "optional": true - }, + "name": "parameter", + "type": "string", + "display_text": "parameter", + "multiple": true + } + ], + "command_flags": [ + "admin", + "noscript", + "loading", + "stale" + ] + }, + "CONFIG HELP": { + "summary": "Returns helpful text about the different subcommands.", + "since": "5.0.0", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@slow" + ], + "arity": 2, + "command_flags": [ + "loading", + "stale" + ] + }, + "CONFIG RESETSTAT": { + "summary": "Resets the server's statistics.", + "since": "2.0.0", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" + ], + "arity": 2, + "command_flags": [ + "admin", + "noscript", + "loading", + "stale" + ], + "hints": [ + "request_policy:all_nodes", + "response_policy:all_succeeded" + ] + }, + "CONFIG REWRITE": { + "summary": "Persists the effective configuration to file.", + "since": "2.8.0", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" + ], + "arity": 2, + "command_flags": [ + "admin", + "noscript", + "loading", + "stale" + ], + "hints": [ + "request_policy:all_nodes", + "response_policy:all_succeeded" + ] + }, + "CONFIG SET": { + "summary": "Sets configuration parameters in-flight.", + "since": "2.0.0", + "group": "server", + "complexity": "O(N) when N is the number of configuration parameters provided", + "history": [ + [ + "7.0.0", + "Added the ability to set multiple parameters in one call." + ] + ], + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" + ], + "arity": -4, + "arguments": [ { "name": "data", "type": "block", "multiple": true, "arguments": [ { - "name": "longitude", - "type": "double", - "display_text": "longitude" - }, - { - "name": "latitude", - "type": "double", - "display_text": "latitude" + "name": "parameter", + "type": "string", + "display_text": "parameter" }, { - "name": "member", + "name": "value", "type": "string", - "display_text": "member" + "display_text": "value" } ] } ], "command_flags": [ - "write", - "denyoom" + "admin", + "noscript", + "loading", + "stale" + ], + "hints": [ + "request_policy:all_nodes", + "response_policy:all_succeeded" ] }, - "GEODIST": { - "summary": "Returns the distance between two members of a geospatial index.", - "since": "3.2.0", - "group": "geo", - "complexity": "O(1)", + "COPY": { + "summary": "Copies the value of a key to a new key.", + "since": "6.2.0", + "group": "generic", + "complexity": "O(N) worst case for collections, where N is the number of nested items. O(1) for string values.", "acl_categories": [ - "@read", - "@geo", + "@keyspace", + "@write", "@slow" ], - "arity": -4, + "arity": -3, "key_specs": [ { "begin_search": { @@ -6632,72 +7001,111 @@ }, "RO": true, "access": true + }, + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "OW": true, + "update": true } ], "arguments": [ { - "name": "key", + "name": "source", "type": "key", - "display_text": "key", + "display_text": "source", "key_spec_index": 0 }, { - "name": "member1", - "type": "string", - "display_text": "member1" + "name": "destination", + "type": "key", + "display_text": "destination", + "key_spec_index": 1 }, { - "name": "member2", - "type": "string", - "display_text": "member2" + "name": "destination-db", + "type": "integer", + "display_text": "destination-db", + "token": "DB", + "optional": true }, { - "name": "unit", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "m", - "type": "pure-token", - "display_text": "m", - "token": "M" - }, - { - "name": "km", - "type": "pure-token", - "display_text": "km", - "token": "KM" - }, - { - "name": "ft", - "type": "pure-token", - "display_text": "ft", - "token": "FT" - }, - { - "name": "mi", - "type": "pure-token", - "display_text": "mi", - "token": "MI" - } - ] + "name": "replace", + "type": "pure-token", + "display_text": "replace", + "token": "REPLACE", + "optional": true } ], "command_flags": [ - "readonly" + "write", + "denyoom" ] }, - "GEOHASH": { - "summary": "Returns members from a geospatial index as geohash strings.", - "since": "3.2.0", - "group": "geo", - "complexity": "O(1) for each member requested.", + "DBSIZE": { + "summary": "Returns the number of keys in the database.", + "since": "1.0.0", + "group": "server", + "complexity": "O(1)", "acl_categories": [ + "@keyspace", "@read", - "@geo", - "@slow" + "@fast" + ], + "arity": 1, + "command_flags": [ + "readonly", + "fast" + ], + "hints": [ + "request_policy:all_shards", + "response_policy:agg_sum" + ] + }, + "DEBUG": { + "summary": "A container for debugging commands.", + "since": "1.0.0", + "group": "server", + "complexity": "Depends on subcommand.", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" ], "arity": -2, + "command_flags": [ + "admin", + "noscript", + "loading", + "stale" + ], + "doc_flags": [ + "syscmd" + ] + }, + "DECR": { + "summary": "Decrements the integer value of a key by one. Uses 0 as initial value if the key doesn't exist.", + "since": "1.0.0", + "group": "string", + "complexity": "O(1)", + "acl_categories": [ + "@write", + "@string", + "@fast" + ], + "arity": 2, "key_specs": [ { "begin_search": { @@ -6714,8 +7122,9 @@ "limit": 0 } }, - "RO": true, - "access": true + "RW": true, + "access": true, + "update": true } ], "arguments": [ @@ -6724,30 +7133,25 @@ "type": "key", "display_text": "key", "key_spec_index": 0 - }, - { - "name": "member", - "type": "string", - "display_text": "member", - "optional": true, - "multiple": true } ], "command_flags": [ - "readonly" + "write", + "denyoom", + "fast" ] }, - "GEOPOS": { - "summary": "Returns the longitude and latitude of members from a geospatial index.", - "since": "3.2.0", - "group": "geo", - "complexity": "O(1) for each member requested.", + "DECRBY": { + "summary": "Decrements a number from the integer value of a key. Uses 0 as initial value if the key doesn't exist.", + "since": "1.0.0", + "group": "string", + "complexity": "O(1)", "acl_categories": [ - "@read", - "@geo", - "@slow" + "@write", + "@string", + "@fast" ], - "arity": -2, + "arity": 3, "key_specs": [ { "begin_search": { @@ -6764,8 +7168,9 @@ "limit": 0 } }, - "RO": true, - "access": true + "RW": true, + "access": true, + "update": true } ], "arguments": [ @@ -6776,40 +7181,28 @@ "key_spec_index": 0 }, { - "name": "member", - "type": "string", - "display_text": "member", - "optional": true, - "multiple": true + "name": "decrement", + "type": "integer", + "display_text": "decrement" } ], "command_flags": [ - "readonly" + "write", + "denyoom", + "fast" ] }, - "GEORADIUS": { - "summary": "Queries a geospatial index for members within a distance from a coordinate, optionally stores the result.", - "since": "3.2.0", - "group": "geo", - "complexity": "O(N+log(M)) where N is the number of elements inside the bounding box of the circular area delimited by center and radius and M is the number of items inside the index.", - "deprecated_since": "6.2.0", - "replaced_by": "`GEOSEARCH` and `GEOSEARCHSTORE` with the `BYRADIUS` argument", - "history": [ - [ - "6.2.0", - "Added the `ANY` option for `COUNT`." - ], - [ - "7.0.0", - "Added support for uppercase unit names." - ] - ], + "DEL": { + "summary": "Deletes one or more keys.", + "since": "1.0.0", + "group": "generic", + "complexity": "O(N) where N is the number of keys that will be removed. When a key to remove holds a value other than a string, the individual complexity for this key is O(M) where M is the number of elements in the list, set, sorted set or hash. Removing a single key that holds a string value is O(1).", "acl_categories": [ + "@keyspace", "@write", - "@geo", "@slow" ], - "arity": -6, + "arity": -2, "key_specs": [ { "begin_search": { @@ -6821,39 +7214,49 @@ "find_keys": { "type": "range", "spec": { - "lastkey": 0, + "lastkey": -1, "keystep": 1, "limit": 0 } }, - "RO": true, - "access": true - }, + "RM": true, + "delete": true + } + ], + "arguments": [ { - "begin_search": { - "type": "keyword", - "spec": { - "keyword": "STORE", - "startfrom": 6 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, - "update": true - }, + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "multiple": true + } + ], + "command_flags": [ + "write" + ], + "hints": [ + "request_policy:multi_shard", + "response_policy:agg_sum" + ] + }, + "DELEX": { + "summary": "Conditionally removes the specified key based on value or digest comparison.", + "since": "8.4.0", + "group": "string", + "complexity": "O(1) for IFEQ/IFNE, O(N) for IFDEQ/IFDNE where N is the length of the string value.", + "acl_categories": [ + "@write", + "@string", + "@fast" + ], + "arity": -2, + "key_specs": [ { "begin_search": { - "type": "keyword", + "type": "index", "spec": { - "keyword": "STOREDIST", - "startfrom": 6 + "index": 1 } }, "find_keys": { @@ -6864,8 +7267,9 @@ "limit": 0 } }, - "OW": true, - "update": true + "RW": true, + "delete": true, + "variable_flags": true } ], "arguments": [ @@ -6876,165 +7280,53 @@ "key_spec_index": 0 }, { - "name": "longitude", - "type": "double", - "display_text": "longitude" - }, - { - "name": "latitude", - "type": "double", - "display_text": "latitude" - }, - { - "name": "radius", - "type": "double", - "display_text": "radius" - }, - { - "name": "unit", + "name": "condition", "type": "oneof", - "arguments": [ - { - "name": "m", - "type": "pure-token", - "display_text": "m", - "token": "M" - }, - { - "name": "km", - "type": "pure-token", - "display_text": "km", - "token": "KM" - }, - { - "name": "ft", - "type": "pure-token", - "display_text": "ft", - "token": "FT" - }, - { - "name": "mi", - "type": "pure-token", - "display_text": "mi", - "token": "MI" - } - ] - }, - { - "name": "withcoord", - "type": "pure-token", - "display_text": "withcoord", - "token": "WITHCOORD", - "optional": true - }, - { - "name": "withdist", - "type": "pure-token", - "display_text": "withdist", - "token": "WITHDIST", - "optional": true - }, - { - "name": "withhash", - "type": "pure-token", - "display_text": "withhash", - "token": "WITHHASH", - "optional": true - }, - { - "name": "count-block", - "type": "block", "optional": true, "arguments": [ { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT" + "name": "ifeq-value", + "type": "string", + "display_text": "ifeq-value", + "token": "IFEQ" }, { - "name": "any", - "type": "pure-token", - "display_text": "any", - "token": "ANY", - "since": "6.2.0", - "optional": true - } - ] - }, - { - "name": "order", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "asc", - "type": "pure-token", - "display_text": "asc", - "token": "ASC" + "name": "ifne-value", + "type": "string", + "display_text": "ifne-value", + "token": "IFNE" }, { - "name": "desc", - "type": "pure-token", - "display_text": "desc", - "token": "DESC" - } - ] - }, - { - "name": "store", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "storekey", - "type": "key", - "display_text": "key", - "key_spec_index": 1, - "token": "STORE" + "name": "ifdeq-digest", + "type": "string", + "display_text": "ifdeq-digest", + "token": "IFDEQ" }, { - "name": "storedistkey", - "type": "key", - "display_text": "key", - "key_spec_index": 2, - "token": "STOREDIST" + "name": "ifdne-digest", + "type": "string", + "display_text": "ifdne-digest", + "token": "IFDNE" } ] } ], "command_flags": [ "write", - "denyoom", - "movablekeys" - ], - "doc_flags": [ - "deprecated" + "fast" ] }, - "GEORADIUSBYMEMBER": { - "summary": "Queries a geospatial index for members within a distance from a member, optionally stores the result.", - "since": "3.2.0", - "group": "geo", - "complexity": "O(N+log(M)) where N is the number of elements inside the bounding box of the circular area delimited by center and radius and M is the number of items inside the index.", - "deprecated_since": "6.2.0", - "replaced_by": "`GEOSEARCH` and `GEOSEARCHSTORE` with the `BYRADIUS` and `FROMMEMBER` arguments", - "history": [ - [ - "6.2.0", - "Added the `ANY` option for `COUNT`." - ], - [ - "7.0.0", - "Added support for uppercase unit names." - ] - ], + "DIGEST": { + "summary": "Returns the XXH3 hash of a string value.", + "since": "8.4.0", + "group": "string", + "complexity": "O(N) where N is the length of the string value.", "acl_categories": [ - "@write", - "@geo", - "@slow" + "@read", + "@string", + "@fast" ], - "arity": -5, + "arity": 2, "key_specs": [ { "begin_search": { @@ -7053,32 +7345,56 @@ }, "RO": true, "access": true - }, + } + ], + "arguments": [ { - "begin_search": { - "type": "keyword", - "spec": { - "keyword": "STORE", - "startfrom": 5 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, - "update": true - }, + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + } + ], + "command_flags": [ + "readonly", + "fast" + ] + }, + "DISCARD": { + "summary": "Discards a transaction.", + "since": "2.0.0", + "group": "transactions", + "complexity": "O(N), when N is the number of queued commands", + "acl_categories": [ + "@fast", + "@transaction" + ], + "arity": 1, + "command_flags": [ + "noscript", + "loading", + "stale", + "fast", + "allow_busy" + ] + }, + "DUMP": { + "summary": "Returns a serialized representation of the value stored at a key.", + "since": "2.6.0", + "group": "generic", + "complexity": "O(1) to access the key and additional O(N*M) to serialize it, where N is the number of Redis objects composing the value and M their average size. For small string values the time complexity is thus O(1)+O(1*M) where M is small, so simply O(1).", + "acl_categories": [ + "@keyspace", + "@read", + "@slow" + ], + "arity": 2, + "key_specs": [ { "begin_search": { - "type": "keyword", + "type": "index", "spec": { - "keyword": "STOREDIST", - "startfrom": 5 + "index": 1 } }, "find_keys": { @@ -7089,8 +7405,8 @@ "limit": 0 } }, - "OW": true, - "update": true + "RO": true, + "access": true } ], "arguments": [ @@ -7099,175 +7415,197 @@ "type": "key", "display_text": "key", "key_spec_index": 0 - }, + } + ], + "command_flags": [ + "readonly" + ], + "hints": [ + "nondeterministic_output" + ] + }, + "ECHO": { + "summary": "Returns the given string.", + "since": "1.0.0", + "group": "connection", + "complexity": "O(1)", + "acl_categories": [ + "@fast", + "@connection" + ], + "arity": 2, + "arguments": [ { - "name": "member", + "name": "message", "type": "string", - "display_text": "member" - }, - { - "name": "radius", - "type": "double", - "display_text": "radius" - }, - { - "name": "unit", - "type": "oneof", - "arguments": [ - { - "name": "m", - "type": "pure-token", - "display_text": "m", - "token": "M" - }, - { - "name": "km", - "type": "pure-token", - "display_text": "km", - "token": "KM" - }, - { - "name": "ft", - "type": "pure-token", - "display_text": "ft", - "token": "FT" - }, - { - "name": "mi", - "type": "pure-token", - "display_text": "mi", - "token": "MI" + "display_text": "message" + } + ], + "command_flags": [ + "loading", + "stale", + "fast" + ] + }, + "EVAL": { + "summary": "Executes a server-side Lua script.", + "since": "2.6.0", + "group": "scripting", + "complexity": "Depends on the script that is executed.", + "acl_categories": [ + "@slow", + "@scripting" + ], + "arity": -3, + "key_specs": [ + { + "notes": "We cannot tell how the keys will be used so we assume the worst, RW and UPDATE", + "begin_search": { + "type": "index", + "spec": { + "index": 2 } - ] - }, + }, + "find_keys": { + "type": "keynum", + "spec": { + "keynumidx": 0, + "firstkey": 1, + "keystep": 1 + } + }, + "RW": true, + "access": true, + "update": true + } + ], + "arguments": [ { - "name": "withcoord", - "type": "pure-token", - "display_text": "withcoord", - "token": "WITHCOORD", - "optional": true + "name": "script", + "type": "string", + "display_text": "script" }, { - "name": "withdist", - "type": "pure-token", - "display_text": "withdist", - "token": "WITHDIST", - "optional": true + "name": "numkeys", + "type": "integer", + "display_text": "numkeys" }, { - "name": "withhash", - "type": "pure-token", - "display_text": "withhash", - "token": "WITHHASH", - "optional": true + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "optional": true, + "multiple": true }, { - "name": "count-block", - "type": "block", + "name": "arg", + "type": "string", + "display_text": "arg", "optional": true, - "arguments": [ - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT" - }, - { - "name": "any", - "type": "pure-token", - "display_text": "any", - "token": "ANY", - "optional": true + "multiple": true + } + ], + "command_flags": [ + "noscript", + "stale", + "skip_monitor", + "no_mandatory_keys", + "movablekeys", + "script_runner" + ] + }, + "EVALSHA": { + "summary": "Executes a server-side Lua script by SHA1 digest.", + "since": "2.6.0", + "group": "scripting", + "complexity": "Depends on the script that is executed.", + "acl_categories": [ + "@slow", + "@scripting" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 } - ] + }, + "find_keys": { + "type": "keynum", + "spec": { + "keynumidx": 0, + "firstkey": 1, + "keystep": 1 + } + }, + "RW": true, + "access": true, + "update": true + } + ], + "arguments": [ + { + "name": "sha1", + "type": "string", + "display_text": "sha1" }, { - "name": "order", - "type": "oneof", + "name": "numkeys", + "type": "integer", + "display_text": "numkeys" + }, + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, "optional": true, - "arguments": [ - { - "name": "asc", - "type": "pure-token", - "display_text": "asc", - "token": "ASC" - }, - { - "name": "desc", - "type": "pure-token", - "display_text": "desc", - "token": "DESC" - } - ] + "multiple": true }, { - "name": "store", - "type": "oneof", + "name": "arg", + "type": "string", + "display_text": "arg", "optional": true, - "arguments": [ - { - "name": "storekey", - "type": "key", - "display_text": "key", - "key_spec_index": 1, - "token": "STORE" - }, - { - "name": "storedistkey", - "type": "key", - "display_text": "key", - "key_spec_index": 2, - "token": "STOREDIST" - } - ] + "multiple": true } ], "command_flags": [ - "write", - "denyoom", - "movablekeys" - ], - "doc_flags": [ - "deprecated" + "noscript", + "stale", + "skip_monitor", + "no_mandatory_keys", + "movablekeys", + "script_runner" ] }, - "GEORADIUSBYMEMBER_RO": { - "summary": "Returns members from a geospatial index that are within a distance from a member.", - "since": "3.2.10", - "group": "geo", - "complexity": "O(N+log(M)) where N is the number of elements inside the bounding box of the circular area delimited by center and radius and M is the number of items inside the index.", - "deprecated_since": "6.2.0", - "replaced_by": "`GEOSEARCH` with the `BYRADIUS` and `FROMMEMBER` arguments", - "history": [ - [ - "6.2.0", - "Added the `ANY` option for `COUNT`." - ], - [ - "7.0.0", - "Added support for uppercase unit names." - ] - ], + "EVALSHA_RO": { + "summary": "Executes a read-only server-side Lua script by SHA1 digest.", + "since": "7.0.0", + "group": "scripting", + "complexity": "Depends on the script that is executed.", "acl_categories": [ - "@read", - "@geo", - "@slow" + "@slow", + "@scripting" ], - "arity": -5, + "arity": -3, "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 1 + "index": 2 } }, "find_keys": { - "type": "range", + "type": "keynum", "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 + "keynumidx": 0, + "firstkey": 1, + "keystep": 1 } }, "RO": true, @@ -7275,143 +7613,144 @@ } ], "arguments": [ + { + "name": "sha1", + "type": "string", + "display_text": "sha1" + }, + { + "name": "numkeys", + "type": "integer", + "display_text": "numkeys" + }, { "name": "key", "type": "key", "display_text": "key", - "key_spec_index": 0 + "key_spec_index": 0, + "optional": true, + "multiple": true }, { - "name": "member", + "name": "arg", "type": "string", - "display_text": "member" - }, - { - "name": "radius", - "type": "double", - "display_text": "radius" - }, + "display_text": "arg", + "optional": true, + "multiple": true + } + ], + "command_flags": [ + "readonly", + "noscript", + "stale", + "skip_monitor", + "no_mandatory_keys", + "movablekeys", + "script_runner" + ] + }, + "EVAL_RO": { + "summary": "Executes a read-only server-side Lua script.", + "since": "7.0.0", + "group": "scripting", + "complexity": "Depends on the script that is executed.", + "acl_categories": [ + "@slow", + "@scripting" + ], + "arity": -3, + "key_specs": [ { - "name": "unit", - "type": "oneof", - "arguments": [ - { - "name": "m", - "type": "pure-token", - "display_text": "m", - "token": "M" - }, - { - "name": "km", - "type": "pure-token", - "display_text": "km", - "token": "KM" - }, - { - "name": "ft", - "type": "pure-token", - "display_text": "ft", - "token": "FT" - }, - { - "name": "mi", - "type": "pure-token", - "display_text": "mi", - "token": "MI" + "notes": "We cannot tell how the keys will be used so we assume the worst, RO and ACCESS", + "begin_search": { + "type": "index", + "spec": { + "index": 2 } - ] - }, - { - "name": "withcoord", - "type": "pure-token", - "display_text": "withcoord", - "token": "WITHCOORD", - "optional": true - }, + }, + "find_keys": { + "type": "keynum", + "spec": { + "keynumidx": 0, + "firstkey": 1, + "keystep": 1 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ { - "name": "withdist", - "type": "pure-token", - "display_text": "withdist", - "token": "WITHDIST", - "optional": true + "name": "script", + "type": "string", + "display_text": "script" }, { - "name": "withhash", - "type": "pure-token", - "display_text": "withhash", - "token": "WITHHASH", - "optional": true + "name": "numkeys", + "type": "integer", + "display_text": "numkeys" }, { - "name": "count-block", - "type": "block", + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, "optional": true, - "arguments": [ - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT" - }, - { - "name": "any", - "type": "pure-token", - "display_text": "any", - "token": "ANY", - "optional": true - } - ] + "multiple": true }, { - "name": "order", - "type": "oneof", + "name": "arg", + "type": "string", + "display_text": "arg", "optional": true, - "arguments": [ - { - "name": "asc", - "type": "pure-token", - "display_text": "asc", - "token": "ASC" - }, - { - "name": "desc", - "type": "pure-token", - "display_text": "desc", - "token": "DESC" - } - ] + "multiple": true } ], "command_flags": [ - "readonly" + "readonly", + "noscript", + "stale", + "skip_monitor", + "no_mandatory_keys", + "movablekeys", + "script_runner" + ] + }, + "EXEC": { + "summary": "Executes all commands in a transaction.", + "since": "1.2.0", + "group": "transactions", + "complexity": "Depends on commands in the transaction", + "acl_categories": [ + "@slow", + "@transaction" ], - "doc_flags": [ - "deprecated" + "arity": 1, + "command_flags": [ + "noscript", + "loading", + "stale", + "skip_slowlog" ] }, - "GEORADIUS_RO": { - "summary": "Returns members from a geospatial index that are within a distance from a coordinate.", - "since": "3.2.10", - "group": "geo", - "complexity": "O(N+log(M)) where N is the number of elements inside the bounding box of the circular area delimited by center and radius and M is the number of items inside the index.", - "deprecated_since": "6.2.0", - "replaced_by": "`GEOSEARCH` with the `BYRADIUS` argument", + "EXISTS": { + "summary": "Determines whether one or more keys exist.", + "since": "1.0.0", + "group": "generic", + "complexity": "O(N) where N is the number of keys to check.", "history": [ [ - "6.2.0", - "Added the `ANY` option for `COUNT`." - ], - [ - "7.0.0", - "Added support for uppercase unit names." + "3.0.3", + "Accepts multiple `key` arguments." ] ], "acl_categories": [ + "@keyspace", "@read", - "@geo", - "@slow" + "@fast" ], - "arity": -6, + "arity": -2, "key_specs": [ { "begin_search": { @@ -7423,13 +7762,12 @@ "find_keys": { "type": "range", "spec": { - "lastkey": 0, + "lastkey": -1, "keystep": 1, "limit": 0 } }, - "RO": true, - "access": true + "RO": true } ], "arguments": [ @@ -7437,139 +7775,204 @@ "name": "key", "type": "key", "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "longitude", - "type": "double", - "display_text": "longitude" - }, + "key_spec_index": 0, + "multiple": true + } + ], + "command_flags": [ + "readonly", + "fast" + ], + "hints": [ + "request_policy:multi_shard", + "response_policy:agg_sum" + ] + }, + "EXPIRE": { + "summary": "Sets the expiration time of a key in seconds.", + "since": "1.0.0", + "group": "generic", + "complexity": "O(1)", + "history": [ + [ + "7.0.0", + "Added options: `NX`, `XX`, `GT` and `LT`." + ] + ], + "acl_categories": [ + "@keyspace", + "@write", + "@fast" + ], + "arity": -3, + "key_specs": [ { - "name": "latitude", - "type": "double", - "display_text": "latitude" - }, + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "update": true + } + ], + "arguments": [ { - "name": "radius", - "type": "double", - "display_text": "radius" + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 }, { - "name": "unit", + "name": "seconds", + "type": "integer", + "display_text": "seconds" + }, + { + "name": "condition", "type": "oneof", + "since": "7.0.0", + "optional": true, "arguments": [ { - "name": "m", + "name": "nx", "type": "pure-token", - "display_text": "m", - "token": "M" + "display_text": "nx", + "token": "NX" }, { - "name": "km", + "name": "xx", "type": "pure-token", - "display_text": "km", - "token": "KM" + "display_text": "xx", + "token": "XX" }, { - "name": "ft", + "name": "gt", "type": "pure-token", - "display_text": "ft", - "token": "FT" + "display_text": "gt", + "token": "GT" }, { - "name": "mi", + "name": "lt", "type": "pure-token", - "display_text": "mi", - "token": "MI" + "display_text": "lt", + "token": "LT" } ] - }, + } + ], + "command_flags": [ + "write", + "fast" + ] + }, + "EXPIREAT": { + "summary": "Sets the expiration time of a key to a Unix timestamp.", + "since": "1.2.0", + "group": "generic", + "complexity": "O(1)", + "history": [ + [ + "7.0.0", + "Added options: `NX`, `XX`, `GT` and `LT`." + ] + ], + "acl_categories": [ + "@keyspace", + "@write", + "@fast" + ], + "arity": -3, + "key_specs": [ { - "name": "withcoord", - "type": "pure-token", - "display_text": "withcoord", - "token": "WITHCOORD", - "optional": true - }, + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "update": true + } + ], + "arguments": [ { - "name": "withdist", - "type": "pure-token", - "display_text": "withdist", - "token": "WITHDIST", - "optional": true + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 }, { - "name": "withhash", - "type": "pure-token", - "display_text": "withhash", - "token": "WITHHASH", - "optional": true + "name": "unix-time-seconds", + "type": "unix-time", + "display_text": "unix-time-seconds" }, { - "name": "count-block", - "type": "block", + "name": "condition", + "type": "oneof", + "since": "7.0.0", "optional": true, "arguments": [ { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT" + "name": "nx", + "type": "pure-token", + "display_text": "nx", + "token": "NX" }, { - "name": "any", + "name": "xx", "type": "pure-token", - "display_text": "any", - "token": "ANY", - "since": "6.2.0", - "optional": true - } - ] - }, - { - "name": "order", - "type": "oneof", - "optional": true, - "arguments": [ + "display_text": "xx", + "token": "XX" + }, { - "name": "asc", + "name": "gt", "type": "pure-token", - "display_text": "asc", - "token": "ASC" + "display_text": "gt", + "token": "GT" }, { - "name": "desc", + "name": "lt", "type": "pure-token", - "display_text": "desc", - "token": "DESC" + "display_text": "lt", + "token": "LT" } ] } ], "command_flags": [ - "readonly" - ], - "doc_flags": [ - "deprecated" + "write", + "fast" ] }, - "GEOSEARCH": { - "summary": "Queries a geospatial index for members inside an area of a box or a circle.", - "since": "6.2.0", - "group": "geo", - "complexity": "O(N+log(M)) where N is the number of elements in the grid-aligned bounding box area around the shape provided as the filter and M is the number of items inside the shape", - "history": [ - [ - "7.0.0", - "Added support for uppercase unit names." - ] - ], + "EXPIRETIME": { + "summary": "Returns the expiration time of a key as a Unix timestamp.", + "since": "7.0.0", + "group": "generic", + "complexity": "O(1)", "acl_categories": [ + "@keyspace", "@read", - "@geo", - "@slow" + "@fast" ], - "arity": -7, + "arity": 2, "key_specs": [ { "begin_search": { @@ -7596,233 +7999,152 @@ "type": "key", "display_text": "key", "key_spec_index": 0 - }, + } + ], + "command_flags": [ + "readonly", + "fast" + ] + }, + "FAILOVER": { + "summary": "Starts a coordinated failover from a server to one of its replicas.", + "since": "6.2.0", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" + ], + "arity": -1, + "arguments": [ { - "name": "from", - "type": "oneof", + "name": "target", + "type": "block", + "token": "TO", + "optional": true, "arguments": [ { - "name": "member", + "name": "host", "type": "string", - "display_text": "member", - "token": "FROMMEMBER" + "display_text": "host" }, { - "name": "fromlonlat", - "type": "block", - "token": "FROMLONLAT", - "arguments": [ - { - "name": "longitude", - "type": "double", - "display_text": "longitude" - }, - { - "name": "latitude", - "type": "double", - "display_text": "latitude" - } - ] + "name": "port", + "type": "integer", + "display_text": "port" + }, + { + "name": "force", + "type": "pure-token", + "display_text": "force", + "token": "FORCE", + "optional": true } ] }, { - "name": "by", - "type": "oneof", - "arguments": [ - { - "name": "circle", - "type": "block", - "arguments": [ - { - "name": "radius", - "type": "double", - "display_text": "radius", - "token": "BYRADIUS" - }, - { - "name": "unit", - "type": "oneof", - "arguments": [ - { - "name": "m", - "type": "pure-token", - "display_text": "m", - "token": "M" - }, - { - "name": "km", - "type": "pure-token", - "display_text": "km", - "token": "KM" - }, - { - "name": "ft", - "type": "pure-token", - "display_text": "ft", - "token": "FT" - }, - { - "name": "mi", - "type": "pure-token", - "display_text": "mi", - "token": "MI" - } - ] - } - ] - }, - { - "name": "box", - "type": "block", - "arguments": [ - { - "name": "width", - "type": "double", - "display_text": "width", - "token": "BYBOX" - }, - { - "name": "height", - "type": "double", - "display_text": "height" - }, - { - "name": "unit", - "type": "oneof", - "arguments": [ - { - "name": "m", - "type": "pure-token", - "display_text": "m", - "token": "M" - }, - { - "name": "km", - "type": "pure-token", - "display_text": "km", - "token": "KM" - }, - { - "name": "ft", - "type": "pure-token", - "display_text": "ft", - "token": "FT" - }, - { - "name": "mi", - "type": "pure-token", - "display_text": "mi", - "token": "MI" - } - ] - } - ] - } - ] - }, - { - "name": "order", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "asc", - "type": "pure-token", - "display_text": "asc", - "token": "ASC" - }, - { - "name": "desc", - "type": "pure-token", - "display_text": "desc", - "token": "DESC" - } - ] - }, - { - "name": "count-block", - "type": "block", - "optional": true, - "arguments": [ - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT" - }, - { - "name": "any", - "type": "pure-token", - "display_text": "any", - "token": "ANY", - "optional": true - } - ] - }, - { - "name": "withcoord", - "type": "pure-token", - "display_text": "withcoord", - "token": "WITHCOORD", - "optional": true - }, - { - "name": "withdist", + "name": "abort", "type": "pure-token", - "display_text": "withdist", - "token": "WITHDIST", + "display_text": "abort", + "token": "ABORT", "optional": true }, { - "name": "withhash", - "type": "pure-token", - "display_text": "withhash", - "token": "WITHHASH", + "name": "milliseconds", + "type": "integer", + "display_text": "milliseconds", + "token": "TIMEOUT", "optional": true } ], "command_flags": [ - "readonly" + "admin", + "noscript", + "stale" ] }, - "GEOSEARCHSTORE": { - "summary": "Queries a geospatial index for members inside an area of a box or a circle, optionally stores the result.", - "since": "6.2.0", - "group": "geo", - "complexity": "O(N+log(M)) where N is the number of elements in the grid-aligned bounding box area around the shape provided as the filter and M is the number of items inside the shape", - "history": [ - [ - "7.0.0", - "Added support for uppercase unit names." - ] - ], + "FCALL": { + "summary": "Invokes a function.", + "since": "7.0.0", + "group": "scripting", + "complexity": "Depends on the function that is executed.", "acl_categories": [ - "@write", - "@geo", - "@slow" + "@slow", + "@scripting" ], - "arity": -8, + "arity": -3, "key_specs": [ { + "notes": "We cannot tell how the keys will be used so we assume the worst, RW and UPDATE", "begin_search": { "type": "index", "spec": { - "index": 1 + "index": 2 } }, "find_keys": { - "type": "range", + "type": "keynum", "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 + "keynumidx": 0, + "firstkey": 1, + "keystep": 1 } }, - "OW": true, + "RW": true, + "access": true, "update": true + } + ], + "arguments": [ + { + "name": "function", + "type": "string", + "display_text": "function" + }, + { + "name": "numkeys", + "type": "integer", + "display_text": "numkeys" + }, + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "optional": true, + "multiple": true }, { + "name": "arg", + "type": "string", + "display_text": "arg", + "optional": true, + "multiple": true + } + ], + "command_flags": [ + "noscript", + "stale", + "skip_monitor", + "no_mandatory_keys", + "movablekeys", + "script_runner" + ] + }, + "FCALL_RO": { + "summary": "Invokes a read-only function.", + "since": "7.0.0", + "group": "scripting", + "complexity": "Depends on the function that is executed.", + "acl_categories": [ + "@slow", + "@scripting" + ], + "arity": -3, + "key_specs": [ + { + "notes": "We cannot tell how the keys will be used so we assume the worst, RO and ACCESS", "begin_search": { "type": "index", "spec": { @@ -7830,11 +8152,11 @@ } }, "find_keys": { - "type": "range", + "type": "keynum", "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 + "keynumidx": 0, + "firstkey": 1, + "keystep": 1 } }, "RO": true, @@ -7843,303 +8165,160 @@ ], "arguments": [ { - "name": "destination", - "type": "key", - "display_text": "destination", - "key_spec_index": 0 + "name": "function", + "type": "string", + "display_text": "function" }, { - "name": "source", - "type": "key", - "display_text": "source", - "key_spec_index": 1 + "name": "numkeys", + "type": "integer", + "display_text": "numkeys" }, { - "name": "from", - "type": "oneof", - "arguments": [ - { - "name": "member", - "type": "string", - "display_text": "member", - "token": "FROMMEMBER" - }, - { - "name": "fromlonlat", - "type": "block", - "token": "FROMLONLAT", - "arguments": [ - { - "name": "longitude", - "type": "double", - "display_text": "longitude" - }, - { - "name": "latitude", - "type": "double", - "display_text": "latitude" - } - ] - } - ] + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "optional": true, + "multiple": true }, { - "name": "by", - "type": "oneof", - "arguments": [ - { - "name": "circle", - "type": "block", - "arguments": [ - { - "name": "radius", - "type": "double", - "display_text": "radius", - "token": "BYRADIUS" - }, - { - "name": "unit", - "type": "oneof", - "arguments": [ - { - "name": "m", - "type": "pure-token", - "display_text": "m", - "token": "M" - }, - { - "name": "km", - "type": "pure-token", - "display_text": "km", - "token": "KM" - }, - { - "name": "ft", - "type": "pure-token", - "display_text": "ft", - "token": "FT" - }, - { - "name": "mi", - "type": "pure-token", - "display_text": "mi", - "token": "MI" - } - ] - } - ] - }, - { - "name": "box", - "type": "block", - "arguments": [ - { - "name": "width", - "type": "double", - "display_text": "width", - "token": "BYBOX" - }, - { - "name": "height", - "type": "double", - "display_text": "height" - }, - { - "name": "unit", - "type": "oneof", - "arguments": [ - { - "name": "m", - "type": "pure-token", - "display_text": "m", - "token": "M" - }, - { - "name": "km", - "type": "pure-token", - "display_text": "km", - "token": "KM" - }, - { - "name": "ft", - "type": "pure-token", - "display_text": "ft", - "token": "FT" - }, - { - "name": "mi", - "type": "pure-token", - "display_text": "mi", - "token": "MI" - } - ] - } - ] - } - ] - }, + "name": "arg", + "type": "string", + "display_text": "arg", + "optional": true, + "multiple": true + } + ], + "command_flags": [ + "readonly", + "noscript", + "stale", + "skip_monitor", + "no_mandatory_keys", + "movablekeys", + "script_runner" + ] + }, + "FLUSHALL": { + "summary": "Removes all keys from all databases.", + "since": "1.0.0", + "group": "server", + "complexity": "O(N) where N is the total number of keys in all databases", + "history": [ + [ + "4.0.0", + "Added the `ASYNC` flushing mode modifier." + ], + [ + "6.2.0", + "Added the `SYNC` flushing mode modifier." + ] + ], + "acl_categories": [ + "@keyspace", + "@write", + "@slow", + "@dangerous" + ], + "arity": -1, + "arguments": [ { - "name": "order", + "name": "flush-type", "type": "oneof", "optional": true, "arguments": [ { - "name": "asc", + "name": "async", "type": "pure-token", - "display_text": "asc", - "token": "ASC" + "display_text": "async", + "token": "ASYNC", + "since": "4.0.0" }, { - "name": "desc", + "name": "sync", "type": "pure-token", - "display_text": "desc", - "token": "DESC" + "display_text": "sync", + "token": "SYNC", + "since": "6.2.0" } ] - }, + } + ], + "command_flags": [ + "write" + ], + "hints": [ + "request_policy:all_shards", + "response_policy:all_succeeded" + ] + }, + "FLUSHDB": { + "summary": "Remove all keys from the current database.", + "since": "1.0.0", + "group": "server", + "complexity": "O(N) where N is the number of keys in the selected database", + "history": [ + [ + "4.0.0", + "Added the `ASYNC` flushing mode modifier." + ], + [ + "6.2.0", + "Added the `SYNC` flushing mode modifier." + ] + ], + "acl_categories": [ + "@keyspace", + "@write", + "@slow", + "@dangerous" + ], + "arity": -1, + "arguments": [ { - "name": "count-block", - "type": "block", + "name": "flush-type", + "type": "oneof", "optional": true, "arguments": [ { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT" + "name": "async", + "type": "pure-token", + "display_text": "async", + "token": "ASYNC", + "since": "4.0.0" }, { - "name": "any", + "name": "sync", "type": "pure-token", - "display_text": "any", - "token": "ANY", - "optional": true + "display_text": "sync", + "token": "SYNC", + "since": "6.2.0" } ] - }, - { - "name": "storedist", - "type": "pure-token", - "display_text": "storedist", - "token": "STOREDIST", - "optional": true } ], "command_flags": [ - "write", - "denyoom" + "write" + ], + "hints": [ + "request_policy:all_shards", + "response_policy:all_succeeded" ] }, - "GET": { - "summary": "Returns the string value of a key.", - "since": "1.0.0", - "group": "string", - "complexity": "O(1)", - "acl_categories": [ - "@read", - "@string", - "@fast" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "GETBIT": { - "summary": "Returns a bit value by offset.", - "since": "2.2.0", - "group": "bitmap", - "complexity": "O(1)", - "acl_categories": [ - "@read", - "@bitmap", - "@fast" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "offset", - "type": "integer", - "display_text": "offset" - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "GETDEL": { - "summary": "Returns the string value of a key after deleting the key.", - "since": "6.2.0", - "group": "string", - "complexity": "O(1)", + "FT.ADD": { + "group": "module", "acl_categories": [ "@write", - "@string", - "@fast" + "@search" ], - "arity": 2, + "arity": -1, "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 1 + "index": 2 } }, "find_keys": { @@ -8152,972 +8331,1416 @@ }, "RW": true, "access": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "update": true } ], "command_flags": [ "write", - "fast" - ] + "denyoom", + "module" + ], + "module": "search" }, - "GETEX": { - "summary": "Returns the string value of a key after setting its expiration time.", - "since": "6.2.0", - "group": "string", + "FT.AGGREGATE": { + "summary": "Run a search query on an index and perform aggregate transformations on the results", + "since": "1.1.0", + "group": "module", "complexity": "O(1)", "acl_categories": [ - "@write", - "@string", - "@fast" - ], - "arity": -2, - "key_specs": [ - { - "notes": "RW and UPDATE because it changes the TTL", - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } + "@read", + "@search" ], + "arity": -3, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "index", + "type": "string", + "display_text": "index", + "summary": "Specifies the name of the index. The index must be created using `FT.CREATE`." }, { - "name": "expiration", - "type": "oneof", + "name": "query", + "type": "string", + "display_text": "query", + "summary": "Specifies the query to profile and analyze performance." + }, + { + "name": "verbatim", + "type": "pure-token", + "display_text": "verbatim", + "token": "VERBATIM", + "summary": "Searches using the exact query terms without stemming or synonym expansion.", + "optional": true + }, + { + "name": "load", + "type": "block", "optional": true, "arguments": [ { - "name": "seconds", - "type": "integer", - "display_text": "seconds", - "token": "EX" - }, - { - "name": "milliseconds", - "type": "integer", - "display_text": "milliseconds", - "token": "PX" - }, - { - "name": "unix-time-seconds", - "type": "unix-time", - "display_text": "unix-time-seconds", - "token": "EXAT" - }, - { - "name": "unix-time-milliseconds", - "type": "unix-time", - "display_text": "unix-time-milliseconds", - "token": "PXAT" + "name": "count", + "type": "string", + "display_text": "count", + "token": "LOAD" }, { - "name": "persist", - "type": "pure-token", - "display_text": "persist", - "token": "PERSIST" + "name": "field", + "type": "string", + "display_text": "field", + "summary": "Specifies a field in the index schema with its properties.", + "multiple": true } ] - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "GETRANGE": { - "summary": "Returns a substring of the string stored at a key.", - "since": "2.4.0", - "group": "string", - "complexity": "O(N) where N is the length of the returned string. The complexity is ultimately determined by the returned length, but because creating a substring from an existing string is very cheap, it can be considered O(1) for small strings.", - "acl_categories": [ - "@read", - "@string", - "@slow" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 }, { - "name": "start", + "name": "timeout", "type": "integer", - "display_text": "start" + "display_text": "timeout", + "token": "TIMEOUT", + "summary": "Sets a time limit for query execution, specified in milliseconds.", + "optional": true }, { - "name": "end", - "type": "integer", - "display_text": "end" - } - ], - "command_flags": [ - "readonly" - ] - }, - "GETSET": { - "summary": "Returns the previous string value of a key after setting it to a new value.", - "since": "1.0.0", - "group": "string", - "complexity": "O(1)", - "deprecated_since": "6.2.0", - "replaced_by": "`SET` with the `!GET` argument", - "acl_categories": [ - "@write", - "@string", - "@fast" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "loadall", + "type": "pure-token", + "display_text": "loadall", + "token": "LOAD *", + "optional": true }, { - "name": "value", - "type": "string", - "display_text": "value" - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ], - "doc_flags": [ - "deprecated" - ] - }, - "HDEL": { - "summary": "Deletes one or more fields and their values from a hash. Deletes the hash if no fields remain.", - "since": "2.0.0", - "group": "hash", - "complexity": "O(N) where N is the number of fields to be removed.", - "history": [ - [ - "2.4.0", - "Accepts multiple `field` arguments." - ] - ], - "acl_categories": [ - "@write", - "@hash", - "@fast" - ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 + "name": "groupby", + "type": "block", + "summary": "Groups results by specified fields, often used for aggregations.", + "optional": true, + "multiple": true, + "arguments": [ + { + "name": "nargs", + "type": "integer", + "display_text": "nargs", + "token": "GROUPBY" + }, + { + "name": "property", + "type": "string", + "display_text": "property", + "multiple": true + }, + { + "name": "reduce", + "type": "block", + "optional": true, + "multiple": true, + "arguments": [ + { + "name": "reduce_token", + "type": "pure-token", + "display_text": "reduce_token", + "token": "REDUCE" + }, + { + "name": "reducer_body", + "type": "oneof", + "arguments": [ + { + "name": "generic_body", + "type": "block", + "arguments": [ + { + "name": "function", + "type": "oneof", + "arguments": [ + { + "name": "count", + "type": "pure-token", + "display_text": "count", + "token": "COUNT" + }, + { + "name": "count_distinct", + "type": "pure-token", + "display_text": "count_distinct", + "token": "COUNT_DISTINCT" + }, + { + "name": "count_distinctish", + "type": "pure-token", + "display_text": "count_distinctish", + "token": "COUNT_DISTINCTISH" + }, + { + "name": "sum", + "type": "pure-token", + "display_text": "sum", + "token": "SUM" + }, + { + "name": "min", + "type": "pure-token", + "display_text": "min", + "token": "MIN" + }, + { + "name": "max", + "type": "pure-token", + "display_text": "max", + "token": "MAX" + }, + { + "name": "avg", + "type": "pure-token", + "display_text": "avg", + "token": "AVG" + }, + { + "name": "stddev", + "type": "pure-token", + "display_text": "stddev", + "token": "STDDEV" + }, + { + "name": "quantile", + "type": "pure-token", + "display_text": "quantile", + "token": "QUANTILE" + }, + { + "name": "tolist", + "type": "pure-token", + "display_text": "tolist", + "token": "TOLIST" + }, + { + "name": "first_value", + "type": "pure-token", + "display_text": "first_value", + "token": "FIRST_VALUE" + }, + { + "name": "random_sample", + "type": "pure-token", + "display_text": "random_sample", + "token": "RANDOM_SAMPLE" + } + ] + }, + { + "name": "nargs", + "type": "integer", + "display_text": "nargs" + }, + { + "name": "arg", + "type": "string", + "display_text": "arg", + "multiple": true + } + ] + }, + { + "name": "collect_body", + "type": "block", + "since": "8.8.0", + "arguments": [ + { + "name": "collect_token", + "type": "pure-token", + "display_text": "collect_token", + "token": "COLLECT" + }, + { + "name": "nargs", + "type": "integer", + "display_text": "nargs" + }, + { + "name": "fields_clause", + "type": "oneof", + "arguments": [ + { + "name": "fields", + "type": "block", + "arguments": [ + { + "name": "num_fields", + "type": "integer", + "display_text": "num_fields", + "token": "FIELDS" + }, + { + "name": "field", + "type": "string", + "display_text": "field", + "multiple": true + } + ] + }, + { + "name": "fieldsall", + "type": "pure-token", + "display_text": "fieldsall", + "token": "FIELDS *" + } + ] + }, + { + "name": "sortby", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "sortby_token", + "type": "pure-token", + "display_text": "sortby_token", + "token": "SORTBY" + }, + { + "name": "nargs", + "type": "integer", + "display_text": "nargs" + }, + { + "name": "key", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "field", + "type": "string", + "display_text": "field" + }, + { + "name": "order", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "asc", + "type": "pure-token", + "display_text": "asc", + "token": "ASC" + }, + { + "name": "desc", + "type": "pure-token", + "display_text": "desc", + "token": "DESC" + } + ] + } + ] + } + ] + }, + { + "name": "limit", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "limit_token", + "type": "pure-token", + "display_text": "limit_token", + "token": "LIMIT" + }, + { + "name": "offset", + "type": "integer", + "display_text": "offset" + }, + { + "name": "count", + "type": "integer", + "display_text": "count" + } + ] + }, + { + "name": "distinct", + "type": "pure-token", + "display_text": "distinct", + "token": "DISTINCT", + "optional": true + } + ] + } + ] + }, + { + "name": "name", + "type": "string", + "display_text": "name", + "token": "AS", + "optional": true + } + ] } - }, - "RW": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + ] }, { - "name": "field", - "type": "string", - "display_text": "field", - "multiple": true - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "HELLO": { - "summary": "Handshakes with the Redis server.", - "since": "6.0.0", - "group": "connection", - "complexity": "O(1)", - "history": [ - [ - "6.2.0", - "`protover` made optional; when called without arguments the command reports the current connection's context." - ] - ], - "acl_categories": [ - "@fast", - "@connection" - ], - "arity": -1, - "arguments": [ - { - "name": "arguments", + "name": "sortby", "type": "block", "optional": true, "arguments": [ { - "name": "protover", + "name": "nargs", "type": "integer", - "display_text": "protover" + "display_text": "nargs", + "token": "SORTBY" }, { - "name": "auth", + "name": "fields", "type": "block", - "token": "AUTH", "optional": true, + "multiple": true, "arguments": [ { - "name": "username", + "name": "property", "type": "string", - "display_text": "username" + "display_text": "property" }, { - "name": "password", - "type": "string", - "display_text": "password" + "name": "order", + "type": "oneof", + "arguments": [ + { + "name": "asc", + "type": "pure-token", + "display_text": "asc", + "token": "ASC" + }, + { + "name": "desc", + "type": "pure-token", + "display_text": "desc", + "token": "DESC" + } + ] } ] }, { - "name": "clientname", - "type": "string", - "display_text": "clientname", - "token": "SETNAME", + "name": "num", + "type": "integer", + "display_text": "num", + "token": "MAX", "optional": true } ] - } - ], - "command_flags": [ - "noscript", - "loading", - "stale", - "fast", - "no_auth", - "allow_busy" - ] - }, - "HEXISTS": { - "summary": "Determines whether a field exists in a hash.", - "since": "2.0.0", - "group": "hash", - "complexity": "O(1)", - "acl_categories": [ - "@read", - "@hash", - "@fast" - ], - "arity": 3, - "key_specs": [ + }, { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 + "name": "apply", + "type": "block", + "optional": true, + "multiple": true, + "arguments": [ + { + "name": "expression", + "type": "block", + "token": "APPLY", + "arguments": [ + { + "name": "exists", + "type": "block", + "token": "exists", + "summary": "Checks whether a field exists in a document." + }, + { + "name": "log", + "type": "block", + "token": "log", + "summary": "Return the logarithm of a number, property or subexpression" + }, + { + "name": "abs", + "type": "block", + "token": "abs", + "summary": "Return the absolute value of a numeric expression" + }, + { + "name": "ceil", + "type": "block", + "token": "ceil", + "summary": "Round to the smallest integer not less than x" + }, + { + "name": "floor", + "type": "block", + "token": "floor", + "summary": "Round to largest integer not greater than x" + }, + { + "name": "log2", + "type": "block", + "token": "log2", + "summary": "Return the logarithm of x to base 2" + }, + { + "name": "exp", + "type": "block", + "token": "exp", + "summary": "Return the exponent of x, e.g., e^x" + }, + { + "name": "sqrt", + "type": "block", + "token": "sqrt", + "summary": "Return the square root of x" + }, + { + "name": "upper", + "type": "block", + "token": "upper", + "summary": "Return the uppercase conversion of s" + }, + { + "name": "lower", + "type": "block", + "token": "lower", + "summary": "Return the lowercase conversion of s" + }, + { + "name": "startswith", + "type": "block", + "token": "startswith", + "summary": "Return 1 if s2 is the prefix of s1, 0 otherwise." + }, + { + "name": "contains", + "type": "block", + "token": "contains", + "summary": "Return the number of occurrences of s2 in s1, 0 otherwise. If s2 is an empty string, return length(s1) + 1." + }, + { + "name": "strlen", + "type": "block", + "token": "strlen", + "summary": "Return the length of s" + }, + { + "name": "substr", + "type": "block", + "token": "substr", + "summary": "Return the substring of s, starting at offset and having count characters. If offset is negative, it represents the distance from the end of the string. If count is -1, it means \"the rest of the string starting at offset\"." + }, + { + "name": "format", + "type": "block", + "token": "format", + "summary": "Use the arguments following fmt to format a string. Currently the only format argument supported is %s and it applies to all types of arguments." + }, + { + "name": "matched_terms", + "type": "block", + "token": "matched_terms", + "summary": "Return the query terms that matched for each record (up to 100), as a list. If a limit is specified, Redis will return the first N matches found, based on query order." + }, + { + "name": "split", + "type": "block", + "token": "split", + "summary": "Split a string by any character in the string sep, and strip any characters in strip. If only s is specified, it is split by commas and spaces are stripped. The output is an array." + }, + { + "name": "timefmt", + "type": "block", + "token": "timefmt", + "summary": "Return a formatted time string based on a numeric timestamp value x." + }, + { + "name": "parsetime", + "type": "block", + "token": "parsetime", + "summary": "The opposite of timefmt() - parse a time format using a given format string" + }, + { + "name": "day", + "type": "block", + "token": "day", + "summary": "Round a Unix timestamp to midnight (00:00) start of the current day." + }, + { + "name": "hour", + "type": "block", + "token": "hour", + "summary": "Round a Unix timestamp to the beginning of the current hour." + }, + { + "name": "minute", + "type": "block", + "token": "minute", + "summary": "Round a Unix timestamp to the beginning of the current minute." + }, + { + "name": "month", + "type": "block", + "token": "month", + "summary": "Round a unix timestamp to the beginning of the current month." + }, + { + "name": "dayofweek", + "type": "block", + "token": "dayofweek", + "summary": "Convert a Unix timestamp to the day number (Sunday = 0)." + }, + { + "name": "dayofmonth", + "type": "block", + "token": "dayofmonth", + "summary": "Convert a Unix timestamp to the day of month number (1 .. 31)." + }, + { + "name": "dayofyear", + "type": "block", + "token": "dayofyear", + "summary": "Convert a Unix timestamp to the day of year number (0 .. 365)." + }, + { + "name": "year", + "type": "block", + "token": "year", + "summary": "Convert a Unix timestamp to the current year (e.g. 2018)." + }, + { + "name": "monthofyear", + "type": "block", + "token": "monthofyear", + "summary": "Convert a Unix timestamp to the current month (0 .. 11)." + }, + { + "name": "geodistance", + "type": "block", + "token": "geodistance", + "summary": "Return distance in meters." + } + ] + }, + { + "name": "name", + "type": "string", + "display_text": "name", + "token": "AS" } - }, - "RO": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + ] }, { - "name": "field", - "type": "string", - "display_text": "field" - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "HEXPIRE": { - "summary": "Set expiry for hash field using relative time to expire (seconds)", - "since": "7.4.0", - "group": "hash", - "complexity": "O(N) where N is the number of specified fields", - "acl_categories": [ - "@write", - "@hash", - "@fast" - ], - "arity": -6, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 + "name": "limit", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "limit", + "type": "pure-token", + "display_text": "limit", + "token": "LIMIT" + }, + { + "name": "offset", + "type": "integer", + "display_text": "offset" + }, + { + "name": "num", + "type": "integer", + "display_text": "num" } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + ] }, { - "name": "seconds", - "type": "integer", - "display_text": "seconds" + "name": "filter", + "type": "string", + "display_text": "filter", + "token": "FILTER", + "summary": "Applies a numeric range filter to restrict results to documents with field values within the specified range.", + "optional": true }, { - "name": "condition", - "type": "oneof", + "name": "cursor", + "type": "block", "optional": true, "arguments": [ { - "name": "nx", - "type": "pure-token", - "display_text": "nx", - "token": "NX" - }, - { - "name": "xx", + "name": "withcursor", "type": "pure-token", - "display_text": "xx", - "token": "XX" + "display_text": "withcursor", + "token": "WITHCURSOR" }, { - "name": "gt", - "type": "pure-token", - "display_text": "gt", - "token": "GT" + "name": "read_size", + "type": "integer", + "display_text": "read_size", + "token": "COUNT", + "optional": true }, { - "name": "lt", - "type": "pure-token", - "display_text": "lt", - "token": "LT" + "name": "idle_time", + "type": "integer", + "display_text": "idle_time", + "token": "MAXIDLE", + "optional": true } ] }, { - "name": "fields", + "name": "params", "type": "block", - "token": "FIELDS", + "optional": true, "arguments": [ { - "name": "numfields", + "name": "params", + "type": "pure-token", + "display_text": "params", + "token": "PARAMS" + }, + { + "name": "nargs", "type": "integer", - "display_text": "numfields" + "display_text": "nargs" }, { - "name": "field", - "type": "string", - "display_text": "field", - "multiple": true + "name": "values", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "name", + "type": "string", + "display_text": "name" + }, + { + "name": "value", + "type": "string", + "display_text": "value" + } + ] } ] + }, + { + "name": "dialect", + "type": "integer", + "display_text": "dialect", + "token": "DIALECT", + "summary": "Sets the query dialect version to be used.", + "since": "2.4.3", + "optional": true } ], "command_flags": [ - "write", - "fast" - ] + "readonly", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" }, - "HEXPIREAT": { - "summary": "Set expiry for hash field using an absolute Unix timestamp (seconds)", - "since": "7.4.0", - "group": "hash", - "complexity": "O(N) where N is the number of specified fields", - "acl_categories": [ - "@write", - "@hash", - "@fast" - ], - "arity": -6, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } + "FT.ALIASADD": { + "summary": "Adds an alias to the index", + "since": "1.0.0", + "group": "module", + "complexity": "O(1)", + "acl_categories": [ + "@search" ], + "arity": 3, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "unix-time-seconds", - "type": "unix-time", - "display_text": "unix-time-seconds" - }, - { - "name": "condition", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "nx", - "type": "pure-token", - "display_text": "nx", - "token": "NX" - }, - { - "name": "xx", - "type": "pure-token", - "display_text": "xx", - "token": "XX" - }, - { - "name": "gt", - "type": "pure-token", - "display_text": "gt", - "token": "GT" - }, - { - "name": "lt", - "type": "pure-token", - "display_text": "lt", - "token": "LT" - } - ] + "name": "alias", + "type": "string", + "display_text": "alias" }, { - "name": "fields", - "type": "block", - "token": "FIELDS", - "arguments": [ - { - "name": "numfields", - "type": "integer", - "display_text": "numfields" - }, - { - "name": "field", - "type": "string", - "display_text": "field", - "multiple": true - } - ] + "name": "index", + "type": "string", + "display_text": "index", + "summary": "Specifies the name of the index. The index must be created using `FT.CREATE`." } ], "command_flags": [ "write", - "fast" - ] + "denyoom", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" }, - "HEXPIRETIME": { - "summary": "Returns the expiration time of a hash field as a Unix timestamp, in seconds.", - "since": "7.4.0", - "group": "hash", - "complexity": "O(N) where N is the number of specified fields", + "FT.ALIASDEL": { + "summary": "Deletes an alias from the index", + "since": "1.0.0", + "group": "module", + "complexity": "O(1)", "acl_categories": [ - "@read", - "@hash", - "@fast" + "@search" ], - "arity": -5, - "key_specs": [ + "arity": 2, + "arguments": [ { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true + "name": "alias", + "type": "string", + "display_text": "alias" } ], + "command_flags": [ + "write", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" + }, + "FT.ALIASLIST": { + "summary": "Lists all aliases for the index", + "since": "8.10.0", + "group": "module", + "complexity": "O(N) where N is the number of aliases", + "acl_categories": [ + "@search" + ], + "arity": 2, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "fields", - "type": "block", - "token": "FIELDS", - "arguments": [ - { - "name": "numfields", - "type": "integer", - "display_text": "numfields" - }, - { - "name": "field", - "type": "string", - "display_text": "field", - "multiple": true - } - ] + "name": "index", + "type": "string", + "display_text": "index", + "summary": "Specifies the name of the index. The index must be created using `FT.CREATE`." } ], "command_flags": [ "readonly", - "fast" - ] + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" }, - "HGET": { - "summary": "Returns the value of a field in a hash.", - "since": "2.0.0", - "group": "hash", + "FT.ALIASUPDATE": { + "summary": "Adds or updates an alias to the index", + "since": "1.0.0", + "group": "module", "complexity": "O(1)", "acl_categories": [ - "@read", - "@hash", - "@fast" + "@search" ], "arity": 3, - "key_specs": [ + "arguments": [ { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true + "name": "alias", + "type": "string", + "display_text": "alias" + }, + { + "name": "index", + "type": "string", + "display_text": "index", + "summary": "Specifies the name of the index. The index must be created using `FT.CREATE`." } ], + "command_flags": [ + "write", + "denyoom", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" + }, + "FT.ALTER": { + "summary": "Adds a new field to the index", + "since": "1.0.0", + "group": "module", + "complexity": "O(N) where N is the number of keys in the keyspace", + "acl_categories": [ + "@search" + ], + "arity": -6, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "index", + "type": "string", + "display_text": "index", + "summary": "Specifies the name of the index. The index must be created using `FT.CREATE`." + }, + { + "name": "skipinitialscan", + "type": "pure-token", + "display_text": "skipinitialscan", + "token": "SKIPINITIALSCAN", + "summary": "Skips the initial scan of the database when creating the index.", + "optional": true + }, + { + "name": "schema", + "type": "pure-token", + "display_text": "schema", + "token": "SCHEMA", + "summary": "Defines the fields in the index and their properties, such as type (`TEXT`, `TAG`, `NUMERIC`, etc.)." + }, + { + "name": "add", + "type": "pure-token", + "display_text": "add", + "token": "ADD" }, { "name": "field", "type": "string", - "display_text": "field" + "display_text": "field", + "summary": "Specifies a field in the index schema with its properties." + }, + { + "name": "options", + "type": "string", + "display_text": "options" } ], "command_flags": [ - "readonly", - "fast" - ] + "write", + "denyoom", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" }, - "HGETALL": { - "summary": "Returns all fields and values in a hash.", - "since": "2.0.0", - "group": "hash", - "complexity": "O(N) where N is the size of the hash.", + "FT.CONFIG": { + "group": "module", "acl_categories": [ - "@read", - "@hash", - "@slow" + "@admin", + "@search" ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } + "arity": -2, + "command_flags": [ + "readonly", + "module" ], + "module": "search" + }, + "FT.CONFIG GET": { + "summary": "Retrieves runtime configuration options", + "since": "1.0.0", + "group": "module", + "complexity": "O(1)", + "arity": -3, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "option", + "type": "string", + "display_text": "option" } ], "command_flags": [ - "readonly" + "readonly", + "module" ], "hints": [ - "nondeterministic_output_order" - ] - }, - "HGETDEL": { - "summary": "Returns the value of a field and deletes it from the hash.", - "since": "8.0.0", - "group": "hash", - "complexity": "O(N) where N is the number of specified fields", - "acl_categories": [ - "@write", - "@hash", - "@fast" + "dont_cache" ], - "arity": -5, - "key_specs": [ + "module": "search" + }, + "FT.CONFIG HELP": { + "summary": "Help description of runtime configuration options", + "since": "1.0.0", + "group": "module", + "complexity": "O(1)", + "arity": -3, + "arguments": [ { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "delete": true + "name": "option", + "type": "string", + "display_text": "option" } ], + "command_flags": [ + "readonly", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" + }, + "FT.CONFIG SET": { + "summary": "Sets runtime configuration options", + "since": "1.0.0", + "group": "module", + "complexity": "O(1)", + "arity": -3, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "option", + "type": "string", + "display_text": "option" }, { - "name": "fields", - "type": "block", - "token": "FIELDS", - "arguments": [ - { - "name": "numfields", - "type": "integer", - "display_text": "numfields" - }, - { - "name": "field", - "type": "string", - "display_text": "field", - "multiple": true - } - ] + "name": "value", + "type": "string", + "display_text": "value" } ], "command_flags": [ "write", - "fast" - ] + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" }, - "HGETEX": { - "summary": "Get the value of one or more fields of a given hash key, and optionally set their expiration.", - "since": "8.0.0", - "group": "hash", - "complexity": "O(N) where N is the number of specified fields", + "FT.CREATE": { + "summary": "Creates an index with the given spec", + "since": "1.0.0", + "group": "module", + "complexity": "O(K) at creation where K is the number of fields, O(N) if scanning the keyspace is triggered, where N is the number of keys in the keyspace", + "history": [ + [ + "2.0.0", + "Added `PAYLOAD_FIELD` argument for backward support of `FT.SEARCH` deprecated `WITHPAYLOADS` argument" + ], + [ + "2.0.0", + "Deprecated `PAYLOAD_FIELD` argument" + ] + ], "acl_categories": [ - "@write", - "@hash", - "@fast" + "@search" ], "arity": -5, - "key_specs": [ - { - "notes": "RW and UPDATE because it changes the TTL", - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "index", + "type": "string", + "display_text": "index", + "summary": "Specifies the name of the index." }, { - "name": "expiration", + "name": "data_type", "type": "oneof", + "token": "ON", + "summary": "Specifies the type of data to index, such as HASH or JSON.", "optional": true, "arguments": [ { - "name": "seconds", - "type": "integer", - "display_text": "seconds", - "token": "EX" - }, - { - "name": "milliseconds", - "type": "integer", - "display_text": "milliseconds", - "token": "PX" + "name": "hash", + "type": "pure-token", + "display_text": "hash", + "token": "HASH" }, { - "name": "unix-time-seconds", - "type": "unix-time", - "display_text": "unix-time-seconds", - "token": "EXAT" - }, + "name": "json", + "type": "pure-token", + "display_text": "json", + "token": "JSON" + } + ] + }, + { + "name": "indexall", + "type": "oneof", + "token": "INDEXALL", + "summary": "When enabled, maintains an inverted index of all document IDs to optimize wildcard queries in heavy update scenarios.", + "since": "8.0.0", + "optional": true, + "arguments": [ { - "name": "unix-time-milliseconds", - "type": "unix-time", - "display_text": "unix-time-milliseconds", - "token": "PXAT" + "name": "enable", + "type": "pure-token", + "display_text": "enable", + "token": "ENABLE", + "summary": "Maintains an inverted index of all document IDs for wildcard queries." }, { - "name": "persist", + "name": "disable", "type": "pure-token", - "display_text": "persist", - "token": "PERSIST" + "display_text": "disable", + "token": "DISABLE", + "summary": "Does not maintain an inverted index of all document IDs (default behavior)." } ] }, { - "name": "fields", + "name": "prefix", "type": "block", - "token": "FIELDS", + "summary": "Filters indexed documents to include only keys that start with the specified prefix.", + "optional": true, "arguments": [ { - "name": "numfields", + "name": "count", "type": "integer", - "display_text": "numfields" + "display_text": "count", + "token": "PREFIX" }, { - "name": "field", + "name": "prefix", "type": "string", - "display_text": "field", + "display_text": "prefix", + "summary": "Filters indexed documents to include only keys that start with the specified prefix.", "multiple": true } ] - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "HINCRBY": { - "summary": "Increments the integer value of a field in a hash by a number. Uses 0 as initial value if the field doesn't exist.", - "since": "2.0.0", - "group": "hash", - "complexity": "O(1)", - "acl_categories": [ - "@write", - "@hash", - "@fast" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 }, { - "name": "field", + "name": "filter", "type": "string", - "display_text": "field" + "display_text": "filter", + "token": "FILTER", + "summary": "Applies a numeric range filter to restrict results to documents with field values within the specified range.", + "optional": true }, { - "name": "increment", - "type": "integer", - "display_text": "increment" + "name": "default_lang", + "type": "string", + "display_text": "default_lang", + "token": "LANGUAGE", + "summary": "Defines the default language for the index.", + "optional": true + }, + { + "name": "lang_attribute", + "type": "string", + "display_text": "lang_attribute", + "token": "LANGUAGE_FIELD", + "summary": "Specifies the attribute from which the language is determined.", + "optional": true + }, + { + "name": "default_score", + "type": "double", + "display_text": "default_score", + "token": "SCORE", + "summary": "Sets the default score for documents in the index.", + "optional": true + }, + { + "name": "score_attribute", + "type": "string", + "display_text": "score_attribute", + "token": "SCORE_FIELD", + "summary": "Specifies the attribute from which the score is derived.", + "optional": true + }, + { + "name": "payload_attribute", + "type": "string", + "display_text": "payload_attribute", + "token": "PAYLOAD_FIELD", + "summary": "Defines the attribute used for payloads in the index.", + "optional": true + }, + { + "name": "maxtextfields", + "type": "pure-token", + "display_text": "maxtextfields", + "token": "MAXTEXTFIELDS", + "summary": "Increases the maximum number of text fields allowed in the schema.", + "optional": true + }, + { + "name": "seconds", + "type": "double", + "display_text": "seconds", + "token": "TEMPORARY", + "summary": "Specifies the duration (in seconds) for which the index remains active (temporary index).", + "optional": true + }, + { + "name": "nooffsets", + "type": "pure-token", + "display_text": "nooffsets", + "token": "NOOFFSETS", + "summary": "Disables storage of term offsets for index entries.", + "optional": true + }, + { + "name": "nohl", + "type": "pure-token", + "display_text": "nohl", + "token": "NOHL", + "summary": "Disables support for highlighting in search results.", + "optional": true + }, + { + "name": "nofields", + "type": "pure-token", + "display_text": "nofields", + "token": "NOFIELDS", + "summary": "Omits returning fields from search results.", + "optional": true + }, + { + "name": "nofreqs", + "type": "pure-token", + "display_text": "nofreqs", + "token": "NOFREQS", + "summary": "Disables storage of term frequencies in the index.", + "optional": true + }, + { + "name": "stopwords", + "type": "block", + "token": "STOPWORDS", + "summary": "Defines custom stop words for the index, which will be ignored during full-text search.", + "optional": true, + "arguments": [ + { + "name": "count", + "type": "integer", + "display_text": "count" + }, + { + "name": "stopword", + "type": "string", + "display_text": "stopword", + "optional": true, + "multiple": true + } + ] + }, + { + "name": "skipinitialscan", + "type": "pure-token", + "display_text": "skipinitialscan", + "token": "SKIPINITIALSCAN", + "summary": "Skips the initial scan of the database when creating the index.", + "optional": true + }, + { + "name": "schema", + "type": "pure-token", + "display_text": "schema", + "token": "SCHEMA", + "summary": "Defines the fields in the index and their properties, such as type (`TEXT`, `TAG`, `NUMERIC`, etc.)." + }, + { + "name": "field", + "type": "block", + "summary": "Specifies a field in the index schema with its properties.", + "multiple": true, + "arguments": [ + { + "name": "field_name", + "type": "string", + "display_text": "field_name" + }, + { + "name": "alias", + "type": "string", + "display_text": "alias", + "token": "AS", + "optional": true + }, + { + "name": "field_type", + "type": "oneof", + "arguments": [ + { + "name": "text", + "type": "pure-token", + "display_text": "text", + "token": "TEXT" + }, + { + "name": "tag", + "type": "pure-token", + "display_text": "tag", + "token": "TAG" + }, + { + "name": "numeric", + "type": "pure-token", + "display_text": "numeric", + "token": "NUMERIC" + }, + { + "name": "geo", + "type": "pure-token", + "display_text": "geo", + "token": "GEO" + }, + { + "name": "geoshape", + "type": "pure-token", + "display_text": "geoshape", + "token": "GEOSHAPE" + }, + { + "name": "vector", + "type": "pure-token", + "display_text": "vector", + "token": "VECTOR" + } + ] + }, + { + "name": "withsuffixtrie", + "type": "pure-token", + "display_text": "withsuffixtrie", + "token": "WITHSUFFIXTRIE", + "optional": true + }, + { + "name": "INDEXEMPTY", + "type": "pure-token", + "display_text": "INDEXEMPTY", + "token": "INDEXEMPTY", + "optional": true + }, + { + "name": "indexmissing", + "type": "pure-token", + "display_text": "indexmissing", + "token": "INDEXMISSING", + "optional": true + }, + { + "name": "sortable", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "sortable", + "type": "pure-token", + "display_text": "sortable", + "token": "SORTABLE" + }, + { + "name": "UNF", + "type": "pure-token", + "display_text": "UNF", + "token": "UNF", + "optional": true + } + ] + }, + { + "name": "noindex", + "type": "pure-token", + "display_text": "noindex", + "token": "NOINDEX", + "optional": true + } + ] } ], "command_flags": [ "write", "denyoom", - "fast" - ] + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" }, - "HINCRBYFLOAT": { - "summary": "Increments the floating point value of a field by a number. Uses 0 as initial value if the field doesn't exist.", - "since": "2.6.0", - "group": "hash", + "FT.CURSOR": { + "group": "module", + "acl_categories": [ + "@read", + "@search" + ], + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "FT.CURSOR DEL": { + "summary": "Deletes a cursor", + "since": "1.1.0", + "group": "module", + "complexity": "O(1)", + "arity": -4, + "arguments": [ + { + "name": "index", + "type": "string", + "display_text": "index", + "summary": "Specifies the name of the index. The index must be created using `FT.CREATE`." + }, + { + "name": "cursor_id", + "type": "integer", + "display_text": "cursor_id" + } + ], + "command_flags": [ + "readonly", + "module" + ], + "hints": [ + "request_policy:special", + "dont_cache" + ], + "module": "search" + }, + "FT.CURSOR GC": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" + }, + "FT.CURSOR READ": { + "summary": "Reads from a cursor", + "since": "1.1.0", + "group": "module", "complexity": "O(1)", + "arity": -4, + "arguments": [ + { + "name": "index", + "type": "string", + "display_text": "index", + "summary": "Specifies the name of the index. The index must be created using `FT.CREATE`." + }, + { + "name": "cursor_id", + "type": "integer", + "display_text": "cursor_id" + }, + { + "name": "read size", + "type": "integer", + "display_text": "read size", + "token": "COUNT", + "optional": true + } + ], + "command_flags": [ + "readonly", + "module" + ], + "hints": [ + "request_policy:special", + "dont_cache" + ], + "module": "search" + }, + "FT.DEL": { + "group": "module", "acl_categories": [ "@write", - "@hash", - "@fast" + "@search" ], - "arity": 4, + "arity": -1, "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 1 + "index": 2 } }, "find_keys": { @@ -9133,188 +9756,252 @@ "update": true } ], + "command_flags": [ + "write", + "module" + ], + "module": "search" + }, + "FT.DICTADD": { + "summary": "Adds terms to a dictionary", + "since": "1.4.0", + "group": "module", + "complexity": "O(1)", + "acl_categories": [ + "@search" + ], + "arity": -3, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "field", + "name": "dict", "type": "string", - "display_text": "field" + "display_text": "dict" }, { - "name": "increment", - "type": "double", - "display_text": "increment" + "name": "term", + "type": "string", + "display_text": "term", + "multiple": true } ], "command_flags": [ "write", "denyoom", - "fast" - ] + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" }, - "HKEYS": { - "summary": "Returns all fields in a hash.", - "since": "2.0.0", - "group": "hash", - "complexity": "O(N) where N is the size of the hash.", + "FT.DICTDEL": { + "summary": "Deletes terms from a dictionary", + "since": "1.4.0", + "group": "module", + "complexity": "O(1)", "acl_categories": [ - "@read", - "@hash", - "@slow" + "@search" ], - "arity": 2, - "key_specs": [ + "arity": -3, + "arguments": [ { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true + "name": "dict", + "type": "string", + "display_text": "dict" + }, + { + "name": "term", + "type": "string", + "display_text": "term", + "multiple": true } ], + "command_flags": [ + "write", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" + }, + "FT.DICTDUMP": { + "summary": "Dumps all terms in the given dictionary", + "since": "1.4.0", + "group": "module", + "complexity": "O(N), where N is the size of the dictionary", + "acl_categories": [ + "@search" + ], + "arity": 2, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "dict", + "type": "string", + "display_text": "dict" } ], "command_flags": [ - "readonly" + "readonly", + "module" ], "hints": [ - "nondeterministic_output_order" - ] + "dont_cache" + ], + "module": "search" }, - "HLEN": { - "summary": "Returns the number of fields in a hash.", + "FT.DROP": { + "group": "module", + "acl_categories": [ + "@write", + "@slow", + "@dangerous", + "@search" + ], + "arity": -1, + "command_flags": [ + "write", + "module" + ], + "module": "search" + }, + "FT.DROPINDEX": { + "summary": "Deletes the index", "since": "2.0.0", - "group": "hash", - "complexity": "O(1)", + "group": "module", + "complexity": "O(1) or O(N) if documents are deleted, where N is the number of keys in the keyspace", "acl_categories": [ - "@read", - "@hash", - "@fast" + "@write", + "@slow", + "@dangerous", + "@search" ], - "arity": 2, - "key_specs": [ + "arity": -2, + "arguments": [ { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 + "name": "index", + "type": "string", + "display_text": "index", + "summary": "Specifies the name of the index. The index must be created using `FT.CREATE`." + }, + { + "name": "delete docs", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "delete docs", + "type": "pure-token", + "display_text": "delete docs", + "token": "DD" } - }, - "RO": true + ] } ], + "command_flags": [ + "write", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" + }, + "FT.EXPLAIN": { + "summary": "Returns the execution plan for a complex query", + "since": "1.0.0", + "group": "module", + "complexity": "O(1)", + "acl_categories": [ + "@search" + ], + "arity": -3, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "index", + "type": "string", + "display_text": "index", + "summary": "Specifies the name of the index. The index must be created using `FT.CREATE`." + }, + { + "name": "query", + "type": "string", + "display_text": "query", + "summary": "Specifies the query to profile and analyze performance." + }, + { + "name": "dialect", + "type": "integer", + "display_text": "dialect", + "token": "DIALECT", + "summary": "Sets the query dialect version to be used.", + "since": "2.4.3", + "optional": true } ], "command_flags": [ "readonly", - "fast" - ] + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" }, - "HMGET": { - "summary": "Returns the values of all fields in a hash.", - "since": "2.0.0", - "group": "hash", - "complexity": "O(N) where N is the number of fields being requested.", + "FT.EXPLAINCLI": { + "summary": "Returns the execution plan for a complex query", + "since": "1.0.0", + "group": "module", + "complexity": "O(1)", "acl_categories": [ - "@read", - "@hash", - "@fast" + "@search" ], "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "index", + "type": "string", + "display_text": "index", + "summary": "Specifies the name of the index. The index must be created using `FT.CREATE`." }, { - "name": "field", + "name": "query", "type": "string", - "display_text": "field", - "multiple": true + "display_text": "query", + "summary": "Specifies the query to profile and analyze performance." + }, + { + "name": "dialect", + "type": "integer", + "display_text": "dialect", + "token": "DIALECT", + "summary": "Sets the query dialect version to be used.", + "since": "2.4.3", + "optional": true } ], "command_flags": [ "readonly", - "fast" - ] + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" }, - "HMSET": { - "summary": "Sets the values of multiple fields.", - "since": "2.0.0", - "group": "hash", - "complexity": "O(N) where N is the number of fields being set.", - "deprecated_since": "4.0.0", - "replaced_by": "`HSET` with multiple field-value pairs", + "FT.GET": { + "group": "module", "acl_categories": [ - "@write", - "@hash", - "@fast" + "@read", + "@search" ], - "arity": -4, + "arity": -1, "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 1 + "index": 2 } }, "find_keys": { @@ -9326,358 +10013,424 @@ } }, "RW": true, + "access": true, "update": true } ], + "command_flags": [ + "readonly", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" + }, + "FT.HYBRID": { + "summary": "Performs hybrid search combining text search and vector similarity search", + "since": "8.4.4", + "group": "module", + "complexity": "O(N+M) where N is the complexity of the text search and M is the complexity of the vector search", + "acl_categories": [ + "@read", + "@search" + ], + "arity": -7, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "index", + "type": "string", + "display_text": "index" }, { - "name": "data", + "name": "search_clause", "type": "block", - "multiple": true, "arguments": [ { - "name": "field", + "name": "search", + "type": "pure-token", + "display_text": "search", + "token": "SEARCH" + }, + { + "name": "query", "type": "string", - "display_text": "field" + "display_text": "query" }, { - "name": "value", + "name": "scorer", "type": "string", - "display_text": "value" + "display_text": "scorer", + "token": "SCORER", + "optional": true + }, + { + "name": "yield_score_as", + "type": "string", + "display_text": "yield_score_as", + "token": "YIELD_SCORE_AS", + "optional": true } ] - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ], - "doc_flags": [ - "deprecated" - ] - }, - "HOTKEYS": { - "summary": "A container for hotkeys tracking commands.", - "since": "8.6.0", - "group": "server", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" - ], - "arity": -2 - }, - "HOTKEYS GET": { - "summary": "Returns lists of top K hotkeys depending on metrics chosen in HOTKEYS START command.", - "since": "8.6.0", - "group": "server", - "complexity": "O(K) where K is the number of hotkeys returned.", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "noscript" - ], - "hints": [ - "nondeterministic_output", - "request_policy:special", - "response_policy:special" - ] - }, - "HOTKEYS HELP": { - "summary": "Return helpful text about HOTKEYS command parameters.", - "since": "8.6.1", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@slow" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "HOTKEYS RESET": { - "summary": "Release the resources used for hotkey tracking.", - "since": "8.6.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "noscript" - ], - "hints": [ - "request_policy:special" - ] - }, - "HOTKEYS START": { - "summary": "Starts hotkeys tracking.", - "since": "8.6.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -2, - "arguments": [ + }, { - "name": "metrics", + "name": "vsim_clause", "type": "block", - "token": "METRICS", "arguments": [ { - "name": "count", - "type": "integer", - "display_text": "count" + "name": "vsim", + "type": "pure-token", + "display_text": "vsim", + "token": "VSIM" }, { - "name": "cpu", - "type": "pure-token", - "display_text": "cpu", - "token": "CPU", - "optional": true + "name": "field", + "type": "string", + "display_text": "field" }, { - "name": "net", - "type": "pure-token", - "display_text": "net", - "token": "NET", + "name": "vector", + "type": "string", + "display_text": "vector" + }, + { + "name": "vector_query_type", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "knn_clause", + "type": "block", + "arguments": [ + { + "name": "knn", + "type": "pure-token", + "display_text": "knn", + "token": "KNN" + }, + { + "name": "count", + "type": "integer", + "display_text": "count" + }, + { + "name": "k", + "type": "integer", + "display_text": "k", + "token": "K" + }, + { + "name": "ef_runtime", + "type": "integer", + "display_text": "ef_runtime", + "token": "EF_RUNTIME", + "optional": true + }, + { + "name": "shard_k_ratio", + "type": "double", + "display_text": "shard_k_ratio", + "token": "SHARD_K_RATIO", + "since": "8.6.1", + "optional": true + }, + { + "name": "yield_score_as", + "type": "string", + "display_text": "yield_score_as", + "token": "YIELD_SCORE_AS", + "optional": true + } + ] + }, + { + "name": "range_clause", + "type": "block", + "arguments": [ + { + "name": "range", + "type": "pure-token", + "display_text": "range", + "token": "RANGE" + }, + { + "name": "count", + "type": "integer", + "display_text": "count" + }, + { + "name": "radius", + "type": "double", + "display_text": "radius", + "token": "RADIUS" + }, + { + "name": "epsilon", + "type": "double", + "display_text": "epsilon", + "token": "EPSILON", + "optional": true + }, + { + "name": "yield_score_as", + "type": "string", + "display_text": "yield_score_as", + "token": "YIELD_SCORE_AS", + "optional": true + } + ] + } + ] + }, + { + "name": "filter", + "type": "string", + "display_text": "filter", + "token": "FILTER", "optional": true } ] }, { - "name": "k", - "type": "integer", - "display_text": "k", - "token": "COUNT", - "optional": true - }, - { - "name": "seconds", - "type": "integer", - "display_text": "seconds", - "token": "DURATION", - "optional": true - }, - { - "name": "ratio", - "type": "integer", - "display_text": "ratio", - "token": "SAMPLE", - "optional": true + "name": "combine", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "combine", + "type": "pure-token", + "display_text": "combine", + "token": "COMBINE" + }, + { + "name": "method", + "type": "oneof", + "arguments": [ + { + "name": "rrf_method", + "type": "block", + "arguments": [ + { + "name": "rrf", + "type": "pure-token", + "display_text": "rrf", + "token": "RRF" + }, + { + "name": "count", + "type": "integer", + "display_text": "count" + }, + { + "name": "constant", + "type": "double", + "display_text": "constant", + "token": "CONSTANT", + "optional": true + }, + { + "name": "window", + "type": "integer", + "display_text": "window", + "token": "WINDOW", + "optional": true + }, + { + "name": "yield_score_as", + "type": "string", + "display_text": "yield_score_as", + "token": "YIELD_SCORE_AS", + "optional": true + } + ] + }, + { + "name": "linear_method", + "type": "block", + "arguments": [ + { + "name": "linear", + "type": "pure-token", + "display_text": "linear", + "token": "LINEAR" + }, + { + "name": "count", + "type": "integer", + "display_text": "count" + }, + { + "name": "weights", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "alpha", + "type": "double", + "display_text": "alpha", + "token": "ALPHA" + }, + { + "name": "beta", + "type": "double", + "display_text": "beta", + "token": "BETA" + } + ] + }, + { + "name": "window", + "type": "integer", + "display_text": "window", + "token": "WINDOW", + "optional": true + }, + { + "name": "yield_score_as", + "type": "string", + "display_text": "yield_score_as", + "token": "YIELD_SCORE_AS", + "optional": true + } + ] + } + ] + } + ] }, { - "name": "slots", + "name": "limit", "type": "block", - "token": "SLOTS", "optional": true, "arguments": [ { - "name": "count", + "name": "limit", + "type": "pure-token", + "display_text": "limit", + "token": "LIMIT" + }, + { + "name": "offset", "type": "integer", - "display_text": "count" + "display_text": "offset" }, { - "name": "slot", + "name": "num", "type": "integer", - "display_text": "slot", - "multiple": true + "display_text": "num" } ] - } - ], - "command_flags": [ - "admin", - "noscript" - ], - "hints": [ - "request_policy:special" - ] - }, - "HOTKEYS STOP": { - "summary": "Stops hotkeys tracking.", - "since": "8.6.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "noscript" - ], - "hints": [ - "request_policy:special" - ] - }, - "HPERSIST": { - "summary": "Removes the expiration time for each specified field", - "since": "7.4.0", - "group": "hash", - "complexity": "O(N) where N is the number of specified fields", - "acl_categories": [ - "@write", - "@hash", - "@fast" - ], - "arity": -5, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 }, { - "name": "fields", - "type": "block", - "token": "FIELDS", + "name": "sorting", + "type": "oneof", + "optional": true, "arguments": [ { - "name": "numfields", - "type": "integer", - "display_text": "numfields" + "name": "sortby", + "type": "block", + "arguments": [ + { + "name": "sortby", + "type": "string", + "display_text": "sortby", + "token": "SORTBY" + }, + { + "name": "order", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "asc", + "type": "pure-token", + "display_text": "asc", + "token": "ASC" + }, + { + "name": "desc", + "type": "pure-token", + "display_text": "desc", + "token": "DESC" + } + ] + } + ] }, { - "name": "field", - "type": "string", - "display_text": "field", - "multiple": true + "name": "nosort", + "type": "pure-token", + "display_text": "nosort", + "token": "NOSORT" } ] - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "HPEXPIRE": { - "summary": "Set expiry for hash field using relative time to expire (milliseconds)", - "since": "7.4.0", - "group": "hash", - "complexity": "O(N) where N is the number of specified fields", - "acl_categories": [ - "@write", - "@hash", - "@fast" - ], - "arity": -6, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 }, { - "name": "milliseconds", - "type": "integer", - "display_text": "milliseconds" + "name": "explainscore", + "type": "pure-token", + "display_text": "explainscore", + "token": "EXPLAINSCORE", + "optional": true }, { - "name": "condition", - "type": "oneof", + "name": "params", + "type": "block", "optional": true, "arguments": [ { - "name": "nx", - "type": "pure-token", - "display_text": "nx", - "token": "NX" - }, - { - "name": "xx", + "name": "params", "type": "pure-token", - "display_text": "xx", - "token": "XX" + "display_text": "params", + "token": "PARAMS" }, { - "name": "gt", - "type": "pure-token", - "display_text": "gt", - "token": "GT" + "name": "nargs", + "type": "integer", + "display_text": "nargs" }, { - "name": "lt", - "type": "pure-token", - "display_text": "lt", - "token": "LT" + "name": "values", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "name", + "type": "string", + "display_text": "name" + }, + { + "name": "value", + "type": "string", + "display_text": "value" + } + ] } ] }, { - "name": "fields", + "name": "timeout", + "type": "integer", + "display_text": "timeout", + "token": "TIMEOUT", + "optional": true + }, + { + "name": "format", + "type": "string", + "display_text": "format", + "token": "FORMAT", + "optional": true + }, + { + "name": "load", "type": "block", - "token": "FIELDS", + "optional": true, "arguments": [ { - "name": "numfields", - "type": "integer", - "display_text": "numfields" + "name": "count", + "type": "string", + "display_text": "count", + "token": "LOAD" }, { "name": "field", @@ -9686,320 +10439,663 @@ "multiple": true } ] - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "HPEXPIREAT": { - "summary": "Set expiry for hash field using an absolute Unix timestamp (milliseconds)", - "since": "7.4.0", - "group": "hash", - "complexity": "O(N) where N is the number of specified fields", - "acl_categories": [ - "@write", - "@hash", - "@fast" - ], - "arity": -6, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 }, { - "name": "unix-time-milliseconds", - "type": "unix-time", - "display_text": "unix-time-milliseconds" + "name": "loadall", + "type": "pure-token", + "display_text": "loadall", + "token": "LOAD *", + "optional": true }, { - "name": "condition", - "type": "oneof", + "name": "groupby", + "type": "block", "optional": true, "arguments": [ { - "name": "nx", + "name": "groupby", "type": "pure-token", - "display_text": "nx", - "token": "NX" + "display_text": "groupby", + "token": "GROUPBY" }, { - "name": "xx", - "type": "pure-token", - "display_text": "xx", - "token": "XX" + "name": "nproperties", + "type": "integer", + "display_text": "nproperties" }, { - "name": "gt", - "type": "pure-token", - "display_text": "gt", - "token": "GT" + "name": "property", + "type": "string", + "display_text": "property", + "multiple": true }, { - "name": "lt", - "type": "pure-token", - "display_text": "lt", - "token": "LT" - } - ] - }, - { - "name": "fields", - "type": "block", - "token": "FIELDS", - "arguments": [ - { - "name": "numfields", - "type": "integer", - "display_text": "numfields" + "name": "reduce", + "type": "block", + "optional": true, + "multiple": true, + "arguments": [ + { + "name": "reduce_token", + "type": "pure-token", + "display_text": "reduce_token", + "token": "REDUCE" + }, + { + "name": "reducer_body", + "type": "oneof", + "arguments": [ + { + "name": "generic_body", + "type": "block", + "arguments": [ + { + "name": "function", + "type": "oneof", + "arguments": [ + { + "name": "count", + "type": "pure-token", + "display_text": "count", + "token": "COUNT" + }, + { + "name": "count_distinct", + "type": "pure-token", + "display_text": "count_distinct", + "token": "COUNT_DISTINCT" + }, + { + "name": "count_distinctish", + "type": "pure-token", + "display_text": "count_distinctish", + "token": "COUNT_DISTINCTISH" + }, + { + "name": "sum", + "type": "pure-token", + "display_text": "sum", + "token": "SUM" + }, + { + "name": "min", + "type": "pure-token", + "display_text": "min", + "token": "MIN" + }, + { + "name": "max", + "type": "pure-token", + "display_text": "max", + "token": "MAX" + }, + { + "name": "avg", + "type": "pure-token", + "display_text": "avg", + "token": "AVG" + }, + { + "name": "stddev", + "type": "pure-token", + "display_text": "stddev", + "token": "STDDEV" + }, + { + "name": "quantile", + "type": "pure-token", + "display_text": "quantile", + "token": "QUANTILE" + }, + { + "name": "tolist", + "type": "pure-token", + "display_text": "tolist", + "token": "TOLIST" + }, + { + "name": "first_value", + "type": "pure-token", + "display_text": "first_value", + "token": "FIRST_VALUE" + }, + { + "name": "random_sample", + "type": "pure-token", + "display_text": "random_sample", + "token": "RANDOM_SAMPLE" + } + ] + }, + { + "name": "nargs", + "type": "integer", + "display_text": "nargs" + }, + { + "name": "arg", + "type": "string", + "display_text": "arg", + "multiple": true + } + ] + }, + { + "name": "collect_body", + "type": "block", + "since": "8.8.0", + "arguments": [ + { + "name": "collect_token", + "type": "pure-token", + "display_text": "collect_token", + "token": "COLLECT" + }, + { + "name": "nargs", + "type": "integer", + "display_text": "nargs" + }, + { + "name": "fields_clause", + "type": "oneof", + "arguments": [ + { + "name": "fields", + "type": "block", + "arguments": [ + { + "name": "num_fields", + "type": "integer", + "display_text": "num_fields", + "token": "FIELDS" + }, + { + "name": "field", + "type": "string", + "display_text": "field", + "multiple": true + } + ] + }, + { + "name": "fieldsall", + "type": "pure-token", + "display_text": "fieldsall", + "token": "FIELDS *" + } + ] + }, + { + "name": "sortby", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "sortby_token", + "type": "pure-token", + "display_text": "sortby_token", + "token": "SORTBY" + }, + { + "name": "nargs", + "type": "integer", + "display_text": "nargs" + }, + { + "name": "key", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "field", + "type": "string", + "display_text": "field" + }, + { + "name": "order", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "asc", + "type": "pure-token", + "display_text": "asc", + "token": "ASC" + }, + { + "name": "desc", + "type": "pure-token", + "display_text": "desc", + "token": "DESC" + } + ] + } + ] + } + ] + }, + { + "name": "limit", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "limit_token", + "type": "pure-token", + "display_text": "limit_token", + "token": "LIMIT" + }, + { + "name": "offset", + "type": "integer", + "display_text": "offset" + }, + { + "name": "count", + "type": "integer", + "display_text": "count" + } + ] + }, + { + "name": "distinct", + "type": "pure-token", + "display_text": "distinct", + "token": "DISTINCT", + "optional": true + } + ] + } + ] + }, + { + "name": "name", + "type": "string", + "display_text": "name", + "token": "AS", + "optional": true + } + ] + } + ] + }, + { + "name": "apply", + "type": "block", + "optional": true, + "multiple": true, + "arguments": [ + { + "name": "expression", + "type": "block", + "token": "APPLY", + "arguments": [ + { + "name": "exists", + "type": "block", + "token": "exists", + "summary": "Checks whether a field exists in a document." + }, + { + "name": "log", + "type": "block", + "token": "log", + "summary": "Return the logarithm of a number, property or subexpression" + }, + { + "name": "abs", + "type": "block", + "token": "abs", + "summary": "Return the absolute value of a numeric expression" + }, + { + "name": "ceil", + "type": "block", + "token": "ceil", + "summary": "Round to the smallest integer not less than x" + }, + { + "name": "floor", + "type": "block", + "token": "floor", + "summary": "Round to largest integer not greater than x" + }, + { + "name": "log2", + "type": "block", + "token": "log2", + "summary": "Return the logarithm of x to base 2" + }, + { + "name": "exp", + "type": "block", + "token": "exp", + "summary": "Return the exponent of x, e.g., e^x" + }, + { + "name": "sqrt", + "type": "block", + "token": "sqrt", + "summary": "Return the square root of x" + }, + { + "name": "upper", + "type": "block", + "token": "upper", + "summary": "Return the uppercase conversion of s" + }, + { + "name": "lower", + "type": "block", + "token": "lower", + "summary": "Return the lowercase conversion of s" + }, + { + "name": "startswith", + "type": "block", + "token": "startswith", + "summary": "Return 1 if s2 is the prefix of s1, 0 otherwise." + }, + { + "name": "contains", + "type": "block", + "token": "contains", + "summary": "Return the number of occurrences of s2 in s1, 0 otherwise. If s2 is an empty string, return length(s1) + 1." + }, + { + "name": "strlen", + "type": "block", + "token": "strlen", + "summary": "Return the length of s" + }, + { + "name": "substr", + "type": "block", + "token": "substr", + "summary": "Return the substring of s, starting at offset and having count characters. If offset is negative, it represents the distance from the end of the string. If count is -1, it means \"the rest of the string starting at offset\"." + }, + { + "name": "format", + "type": "block", + "token": "format", + "summary": "Use the arguments following fmt to format a string. Currently the only format argument supported is %s and it applies to all types of arguments." + }, + { + "name": "matched_terms", + "type": "block", + "token": "matched_terms", + "summary": "Return the query terms that matched for each record (up to 100), as a list. If a limit is specified, Redis will return the first N matches found, based on query order." + }, + { + "name": "split", + "type": "block", + "token": "split", + "summary": "Split a string by any character in the string sep, and strip any characters in strip. If only s is specified, it is split by commas and spaces are stripped. The output is an array." + }, + { + "name": "timefmt", + "type": "block", + "token": "timefmt", + "summary": "Return a formatted time string based on a numeric timestamp value x." + }, + { + "name": "parsetime", + "type": "block", + "token": "parsetime", + "summary": "The opposite of timefmt() - parse a time format using a given format string" + }, + { + "name": "day", + "type": "block", + "token": "day", + "summary": "Round a Unix timestamp to midnight (00:00) start of the current day." + }, + { + "name": "hour", + "type": "block", + "token": "hour", + "summary": "Round a Unix timestamp to the beginning of the current hour." + }, + { + "name": "minute", + "type": "block", + "token": "minute", + "summary": "Round a Unix timestamp to the beginning of the current minute." + }, + { + "name": "month", + "type": "block", + "token": "month", + "summary": "Round a unix timestamp to the beginning of the current month." + }, + { + "name": "dayofweek", + "type": "block", + "token": "dayofweek", + "summary": "Convert a Unix timestamp to the day number (Sunday = 0)." + }, + { + "name": "dayofmonth", + "type": "block", + "token": "dayofmonth", + "summary": "Convert a Unix timestamp to the day of month number (1 .. 31)." + }, + { + "name": "dayofyear", + "type": "block", + "token": "dayofyear", + "summary": "Convert a Unix timestamp to the day of year number (0 .. 365)." + }, + { + "name": "year", + "type": "block", + "token": "year", + "summary": "Convert a Unix timestamp to the current year (e.g. 2018)." + }, + { + "name": "monthofyear", + "type": "block", + "token": "monthofyear", + "summary": "Convert a Unix timestamp to the current month (0 .. 11)." + }, + { + "name": "geodistance", + "type": "block", + "token": "geodistance", + "summary": "Return distance in meters." + } + ] }, { - "name": "field", + "name": "name", "type": "string", - "display_text": "field", - "multiple": true + "display_text": "name", + "token": "AS" } ] - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "HPEXPIRETIME": { - "summary": "Returns the expiration time of a hash field as a Unix timestamp, in msec.", - "since": "7.4.0", - "group": "hash", - "complexity": "O(N) where N is the number of specified fields", - "acl_categories": [ - "@read", - "@hash", - "@fast" - ], - "arity": -5, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 }, { - "name": "fields", + "name": "filter", "type": "block", - "token": "FIELDS", + "token": "FILTER", + "optional": true, "arguments": [ { - "name": "numfields", + "name": "count", "type": "integer", - "display_text": "numfields" + "display_text": "count" }, { - "name": "field", + "name": "filter_expression", "type": "string", - "display_text": "field", - "multiple": true + "display_text": "filter_expression" + }, + { + "name": "policy", + "type": "oneof", + "token": "POLICY", + "optional": true, + "arguments": [ + { + "name": "adhoc", + "type": "pure-token", + "display_text": "adhoc", + "token": "ADHOC" + }, + { + "name": "batches", + "type": "pure-token", + "display_text": "batches", + "token": "BATCHES" + } + ] + }, + { + "name": "batch_size_value", + "type": "integer", + "display_text": "batch_size_value", + "token": "BATCH_SIZE", + "optional": true } ] } ], "command_flags": [ "readonly", - "fast" - ] + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" }, - "HPTTL": { - "summary": "Returns the TTL in milliseconds of a hash field.", - "since": "7.4.0", - "group": "hash", - "complexity": "O(N) where N is the number of specified fields", + "FT.INFO": { + "summary": "Returns information and statistics on the index", + "since": "1.0.0", + "group": "module", + "complexity": "O(1)", "acl_categories": [ - "@read", - "@hash", - "@fast" + "@search" ], - "arity": -5, - "key_specs": [ + "arity": 2, + "arguments": [ { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "fields", - "type": "block", - "token": "FIELDS", - "arguments": [ - { - "name": "numfields", - "type": "integer", - "display_text": "numfields" - }, - { - "name": "field", - "type": "string", - "display_text": "field", - "multiple": true - } - ] + "name": "index", + "type": "string", + "display_text": "index", + "summary": "Specifies the name of the index. The index must be created using `FT.CREATE`." } ], "command_flags": [ "readonly", - "fast" + "module" ], "hints": [ - "nondeterministic_output" - ] + "dont_cache" + ], + "module": "search" }, - "HRANDFIELD": { - "summary": "Returns one or more random fields from a hash.", - "since": "6.2.0", - "group": "hash", - "complexity": "O(N) where N is the number of fields returned", + "FT.MGET": { + "group": "module", "acl_categories": [ "@read", - "@hash", - "@slow" + "@search" ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } + "arity": -1, + "command_flags": [ + "readonly", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" + }, + "FT.PROFILE": { + "summary": "Performs a `FT.SEARCH`, `FT.AGGREGATE`, or `FT.HYBRID` command and collects performance information", + "since": "2.2.0", + "group": "module", + "complexity": "O(N)", + "acl_categories": [ + "@read", + "@search" ], + "arity": -5, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "index", + "type": "string", + "display_text": "index", + "summary": "Specifies the name of the index. The index must be created using `FT.CREATE`." }, { - "name": "options", - "type": "block", - "optional": true, + "name": "querytype", + "type": "oneof", "arguments": [ { - "name": "count", - "type": "integer", - "display_text": "count" + "name": "search", + "type": "pure-token", + "display_text": "search", + "token": "SEARCH" }, { - "name": "withvalues", + "name": "aggregate", "type": "pure-token", - "display_text": "withvalues", - "token": "WITHVALUES", - "optional": true + "display_text": "aggregate", + "token": "AGGREGATE" + }, + { + "name": "hybrid", + "type": "pure-token", + "display_text": "hybrid", + "token": "HYBRID" } ] + }, + { + "name": "limited", + "type": "pure-token", + "display_text": "limited", + "token": "LIMITED", + "summary": "Restricts profiling to the initial phase of the query execution.", + "optional": true + }, + { + "name": "queryword", + "type": "pure-token", + "display_text": "queryword", + "token": "QUERY" + }, + { + "name": "query", + "type": "string", + "display_text": "query", + "summary": "Specifies the query to profile and analyze performance." } ], "command_flags": [ - "readonly" + "readonly", + "module" ], "hints": [ - "nondeterministic_output" - ] + "dont_cache" + ], + "module": "search" }, - "HSCAN": { - "summary": "Iterates over fields and values of a hash.", - "since": "2.8.0", - "group": "hash", - "complexity": "O(1) for every call. O(N) for a complete iteration, including enough command calls for the cursor to return back to 0. N is the number of elements inside the collection.", + "FT.SAFEADD": { + "group": "module", "acl_categories": [ - "@read", - "@hash", - "@slow" + "@write", + "@search" ], - "arity": -3, + "arity": -1, "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 1 + "index": 2 } }, "find_keys": { @@ -10010,315 +11106,630 @@ "limit": 0 } }, - "RO": true, - "access": true + "RW": true, + "access": true, + "update": true } ], + "command_flags": [ + "write", + "denyoom", + "module" + ], + "module": "search" + }, + "FT.SEARCH": { + "summary": "Searches the index with a textual query, returning either documents or just ids", + "since": "1.0.0", + "group": "module", + "complexity": "O(N)", + "history": [ + [ + "2.0.0", + "Deprecated `WITHPAYLOADS` and `PAYLOAD` arguments" + ] + ], + "acl_categories": [ + "@read", + "@search" + ], + "arity": -3, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "index", + "type": "string", + "display_text": "index", + "summary": "Specifies the name of the index. The index must be created using `FT.CREATE`." }, { - "name": "cursor", - "type": "integer", - "display_text": "cursor" + "name": "query", + "type": "string", + "display_text": "query", + "summary": "Specifies the query to profile and analyze performance." }, { - "name": "pattern", - "type": "pattern", - "display_text": "pattern", - "token": "MATCH", + "name": "nocontent", + "type": "pure-token", + "display_text": "nocontent", + "token": "NOCONTENT", + "summary": "Returns only the document IDs in the search results, excluding the content.", "optional": true }, { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", + "name": "verbatim", + "type": "pure-token", + "display_text": "verbatim", + "token": "VERBATIM", + "summary": "Searches using the exact query terms without stemming or query expansion.", "optional": true }, { - "name": "novalues", + "name": "nostopwords", "type": "pure-token", - "display_text": "novalues", - "token": "NOVALUES", + "display_text": "nostopwords", + "token": "NOSTOPWORDS", "optional": true - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "HSET": { - "summary": "Creates or modifies the value of a field in a hash.", - "since": "2.0.0", - "group": "hash", - "complexity": "O(1) for each field/value pair added, so O(N) to add N field/value pairs when the command is called with multiple field/value pairs.", - "history": [ - [ - "4.0.0", - "Accepts multiple `field` and `value` arguments." - ] - ], - "acl_categories": [ - "@write", - "@hash", - "@fast" - ], - "arity": -4, - "key_specs": [ + }, { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ + "name": "withscores", + "type": "pure-token", + "display_text": "withscores", + "token": "WITHSCORES", + "summary": "Includes the relative scores of each document in the search results.", + "optional": true + }, { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "withpayloads", + "type": "pure-token", + "display_text": "withpayloads", + "token": "WITHPAYLOADS", + "optional": true }, { - "name": "data", + "name": "withsortkeys", + "type": "pure-token", + "display_text": "withsortkeys", + "token": "WITHSORTKEYS", + "summary": "Returns the sorting key value alongside the document ID.", + "optional": true + }, + { + "name": "filter", "type": "block", + "summary": "Applies a numeric range filter to restrict results to documents with field values within the specified range.", + "optional": true, "multiple": true, "arguments": [ { - "name": "field", + "name": "numeric_field", "type": "string", - "display_text": "field" + "display_text": "numeric_field", + "token": "FILTER" }, { - "name": "value", - "type": "string", - "display_text": "value" - } - ] - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "HSETEX": { - "summary": "Set the value of one or more fields of a given hash key, and optionally set their expiration.", - "since": "8.0.0", - "group": "hash", - "complexity": "O(N) where N is the number of fields being set.", - "acl_categories": [ - "@write", - "@hash", - "@fast" - ], - "arity": -6, - "key_specs": [ + "name": "min", + "type": "double", + "display_text": "min" + }, + { + "name": "max", + "type": "double", + "display_text": "max" + } + ] + }, { - "begin_search": { - "type": "index", - "spec": { - "index": 1 + "name": "geo_filter", + "type": "block", + "optional": true, + "multiple": true, + "arguments": [ + { + "name": "geo_field", + "type": "string", + "display_text": "geo_field", + "token": "GEOFILTER" + }, + { + "name": "lon", + "type": "double", + "display_text": "lon" + }, + { + "name": "lat", + "type": "double", + "display_text": "lat" + }, + { + "name": "radius", + "type": "double", + "display_text": "radius" + }, + { + "name": "radius_type", + "type": "oneof", + "arguments": [ + { + "name": "m", + "type": "pure-token", + "display_text": "m", + "token": "m" + }, + { + "name": "km", + "type": "pure-token", + "display_text": "km", + "token": "km" + }, + { + "name": "mi", + "type": "pure-token", + "display_text": "mi", + "token": "mi" + }, + { + "name": "ft", + "type": "pure-token", + "display_text": "ft", + "token": "ft" + } + ] } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 + ] + }, + { + "name": "in_keys", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "count", + "type": "string", + "display_text": "count", + "token": "INKEYS" + }, + { + "name": "key", + "type": "string", + "display_text": "key", + "multiple": true } - }, - "RW": true, - "update": true - } - ], - "arguments": [ + ] + }, { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "in_fields", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "count", + "type": "string", + "display_text": "count", + "token": "INFIELDS" + }, + { + "name": "field", + "type": "string", + "display_text": "field", + "summary": "Specifies a field in the index schema with its properties.", + "multiple": true + } + ] }, { - "name": "condition", - "type": "oneof", + "name": "return", + "type": "block", "optional": true, "arguments": [ { - "name": "fnx", - "type": "pure-token", - "display_text": "fnx", - "token": "FNX" + "name": "count", + "type": "string", + "display_text": "count", + "token": "RETURN" }, { - "name": "fxx", - "type": "pure-token", - "display_text": "fxx", - "token": "FXX" + "name": "identifiers", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "identifier", + "type": "string", + "display_text": "identifier" + }, + { + "name": "property", + "type": "string", + "display_text": "property", + "token": "AS", + "optional": true + } + ] } ] }, { - "name": "expiration", - "type": "oneof", + "name": "summarize", + "type": "block", + "summary": "Splits a field into contextual fragments surrounding the found terms, Note that summarize for JSON documents is not currently supported.", "optional": true, "arguments": [ { - "name": "seconds", - "type": "integer", - "display_text": "seconds", - "token": "EX" + "name": "summarize", + "type": "pure-token", + "display_text": "summarize", + "token": "SUMMARIZE" }, { - "name": "milliseconds", - "type": "integer", - "display_text": "milliseconds", - "token": "PX" + "name": "fields", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "count", + "type": "string", + "display_text": "count", + "token": "FIELDS" + }, + { + "name": "field", + "type": "string", + "display_text": "field", + "summary": "Specifies a field in the index schema with its properties.", + "multiple": true + } + ] }, { - "name": "unix-time-seconds", - "type": "unix-time", - "display_text": "unix-time-seconds", - "token": "EXAT" + "name": "num", + "type": "integer", + "display_text": "num", + "token": "FRAGS", + "optional": true }, { - "name": "unix-time-milliseconds", - "type": "unix-time", - "display_text": "unix-time-milliseconds", - "token": "PXAT" + "name": "fragsize", + "type": "integer", + "display_text": "fragsize", + "token": "LEN", + "optional": true }, { - "name": "keepttl", - "type": "pure-token", - "display_text": "keepttl", - "token": "KEEPTTL" + "name": "separator", + "type": "string", + "display_text": "separator", + "token": "SEPARATOR", + "optional": true } ] }, { - "name": "fields", + "name": "highlight", "type": "block", - "token": "FIELDS", + "summary": "Highlights terms in the search results, with customizable tags for emphasis. Note that highlight for JSON documents is not currently supported.", + "optional": true, "arguments": [ { - "name": "numfields", - "type": "integer", - "display_text": "numfields" + "name": "highlight", + "type": "pure-token", + "display_text": "highlight", + "token": "HIGHLIGHT", + "summary": "Highlights terms in the search results, with customizable tags for emphasis." }, { - "name": "data", + "name": "fields", "type": "block", - "multiple": true, + "optional": true, "arguments": [ + { + "name": "count", + "type": "string", + "display_text": "count", + "token": "FIELDS" + }, { "name": "field", "type": "string", - "display_text": "field" + "display_text": "field", + "summary": "Specifies a field in the index schema with its properties.", + "multiple": true + } + ] + }, + { + "name": "tags", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "tags", + "type": "pure-token", + "display_text": "tags", + "token": "TAGS" }, { - "name": "value", + "name": "open", "type": "string", - "display_text": "value" + "display_text": "open" + }, + { + "name": "close", + "type": "string", + "display_text": "close" } ] } ] - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "HSETNX": { - "summary": "Sets the value of a field in a hash only when the field doesn't exist.", - "since": "2.0.0", - "group": "hash", - "complexity": "O(1)", - "acl_categories": [ - "@write", - "@hash", - "@fast" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "insert": true - } - ], - "arguments": [ + }, { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "slop", + "type": "integer", + "display_text": "slop", + "token": "SLOP", + "optional": true }, { - "name": "field", + "name": "timeout", + "type": "integer", + "display_text": "timeout", + "token": "TIMEOUT", + "summary": "Sets a time limit for query execution, specified in milliseconds.", + "optional": true + }, + { + "name": "inorder", + "type": "pure-token", + "display_text": "inorder", + "token": "INORDER", + "optional": true + }, + { + "name": "language", "type": "string", - "display_text": "field" + "display_text": "language", + "token": "LANGUAGE", + "summary": "Specifies the default language for full-text search, influencing stemming and stop-word behavior.", + "optional": true }, { - "name": "value", + "name": "expander", "type": "string", - "display_text": "value" + "display_text": "expander", + "token": "EXPANDER", + "optional": true + }, + { + "name": "scorer", + "type": "string", + "display_text": "scorer", + "token": "SCORER", + "optional": true + }, + { + "name": "explainscore", + "type": "pure-token", + "display_text": "explainscore", + "token": "EXPLAINSCORE", + "optional": true + }, + { + "name": "payload", + "type": "string", + "display_text": "payload", + "token": "PAYLOAD", + "optional": true + }, + { + "name": "sortby", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "sortby", + "type": "string", + "display_text": "sortby", + "token": "SORTBY" + }, + { + "name": "order", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "asc", + "type": "pure-token", + "display_text": "asc", + "token": "ASC" + }, + { + "name": "desc", + "type": "pure-token", + "display_text": "desc", + "token": "DESC" + } + ] + } + ] + }, + { + "name": "limit", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "limit", + "type": "pure-token", + "display_text": "limit", + "token": "LIMIT" + }, + { + "name": "offset", + "type": "integer", + "display_text": "offset" + }, + { + "name": "num", + "type": "integer", + "display_text": "num" + } + ] + }, + { + "name": "params", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "params", + "type": "pure-token", + "display_text": "params", + "token": "PARAMS" + }, + { + "name": "nargs", + "type": "integer", + "display_text": "nargs" + }, + { + "name": "values", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "name", + "type": "string", + "display_text": "name" + }, + { + "name": "value", + "type": "string", + "display_text": "value" + } + ] + } + ] + }, + { + "name": "dialect", + "type": "integer", + "display_text": "dialect", + "token": "DIALECT", + "summary": "Sets the query dialect version to be used.", + "since": "2.4.3", + "optional": true } ], "command_flags": [ - "write", - "denyoom", - "fast" - ] + "readonly", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" }, - "HSTRLEN": { - "summary": "Returns the length of the value of a field.", - "since": "3.2.0", - "group": "hash", + "FT.SPELLCHECK": { + "summary": "Performs spelling correction on a query, returning suggestions for misspelled terms", + "since": "1.4.0", + "group": "module", "complexity": "O(1)", "acl_categories": [ - "@read", - "@hash", - "@fast" + "@search" ], - "arity": 3, + "arity": -3, + "arguments": [ + { + "name": "index", + "type": "string", + "display_text": "index", + "summary": "Specifies the name of the index. The index must be created using `FT.CREATE`." + }, + { + "name": "query", + "type": "string", + "display_text": "query", + "summary": "Specifies the query to profile and analyze performance." + }, + { + "name": "distance", + "type": "integer", + "display_text": "distance", + "token": "DISTANCE", + "optional": true + }, + { + "name": "terms", + "type": "block", + "token": "TERMS", + "optional": true, + "arguments": [ + { + "name": "inclusion", + "type": "oneof", + "arguments": [ + { + "name": "include", + "type": "pure-token", + "display_text": "include", + "token": "INCLUDE" + }, + { + "name": "exclude", + "type": "pure-token", + "display_text": "exclude", + "token": "EXCLUDE" + } + ] + }, + { + "name": "dictionary", + "type": "string", + "display_text": "dictionary" + }, + { + "name": "terms", + "type": "string", + "display_text": "terms", + "optional": true, + "multiple": true + } + ] + }, + { + "name": "dialect", + "type": "integer", + "display_text": "dialect", + "token": "DIALECT", + "summary": "Sets the query dialect version to be used.", + "since": "2.4.3", + "optional": true + } + ], + "command_flags": [ + "readonly", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" + }, + "FT.SUGADD": { + "summary": "Adds a suggestion string to an auto-complete suggestion dictionary", + "since": "1.0.0", + "group": "module", + "complexity": "O(1)", + "history": [ + [ + "2.0.0", + "Deprecated `PAYLOAD` argument" + ] + ], + "acl_categories": [ + "@write", + "@search" + ], + "arity": -4, "key_specs": [ { "begin_search": { @@ -10335,38 +11746,68 @@ "limit": 0 } }, - "RO": true + "RW": true, + "access": true, + "update": true } ], "arguments": [ { "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "type": "string", + "display_text": "key" }, { - "name": "field", + "name": "string", "type": "string", - "display_text": "field" + "display_text": "string" + }, + { + "name": "score", + "type": "double", + "display_text": "score" + }, + { + "name": "increment score", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "incr", + "type": "pure-token", + "display_text": "incr", + "token": "INCR" + } + ] + }, + { + "name": "payload", + "type": "string", + "display_text": "payload", + "token": "PAYLOAD", + "optional": true } ], "command_flags": [ - "readonly", - "fast" - ] + "write", + "denyoom", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" }, - "HTTL": { - "summary": "Returns the TTL in seconds of a hash field.", - "since": "7.4.0", - "group": "hash", - "complexity": "O(N) where N is the number of specified fields", + "FT.SUGDEL": { + "summary": "Deletes a string from a suggestion index", + "since": "1.0.0", + "group": "module", + "complexity": "O(1)", "acl_categories": [ - "@read", - "@hash", - "@fast" + "@write", + "@search" ], - "arity": -5, + "arity": 3, "key_specs": [ { "begin_search": { @@ -10383,55 +11824,48 @@ "limit": 0 } }, - "RO": true, - "access": true + "RW": true, + "access": true, + "update": true } ], "arguments": [ { "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "type": "string", + "display_text": "key" }, { - "name": "fields", - "type": "block", - "token": "FIELDS", - "arguments": [ - { - "name": "numfields", - "type": "integer", - "display_text": "numfields" - }, - { - "name": "field", - "type": "string", - "display_text": "field", - "multiple": true - } - ] + "name": "string", + "type": "string", + "display_text": "string" } ], "command_flags": [ - "readonly", - "fast" + "write", + "module" ], "hints": [ - "nondeterministic_output" - ] + "dont_cache" + ], + "module": "search" }, - "HVALS": { - "summary": "Returns all values in a hash.", - "since": "2.0.0", - "group": "hash", - "complexity": "O(N) where N is the size of the hash.", + "FT.SUGGET": { + "summary": "Gets completion suggestions for a prefix", + "since": "1.0.0", + "group": "module", + "complexity": "O(1)", + "history": [ + [ + "2.0.0", + "Deprecated `WITHPAYLOADS` argument" + ] + ], "acl_categories": [ "@read", - "@hash", - "@slow" + "@search" ], - "arity": 2, + "arity": -3, "key_specs": [ { "begin_search": { @@ -10448,34 +11882,67 @@ "limit": 0 } }, - "RO": true, - "access": true + "RW": true, + "access": true, + "update": true } ], "arguments": [ { "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "type": "string", + "display_text": "key" + }, + { + "name": "prefix", + "type": "string", + "display_text": "prefix", + "summary": "Filters indexed documents to include only keys that start with the specified prefix." + }, + { + "name": "fuzzy", + "type": "pure-token", + "display_text": "fuzzy", + "token": "FUZZY", + "optional": true + }, + { + "name": "withscores", + "type": "pure-token", + "display_text": "withscores", + "token": "WITHSCORES", + "summary": "Includes the relative scores of each document in the search results.", + "optional": true + }, + { + "name": "withpayloads", + "type": "pure-token", + "display_text": "withpayloads", + "token": "WITHPAYLOADS", + "optional": true + }, + { + "name": "max", + "type": "integer", + "display_text": "max", + "token": "MAX", + "optional": true } ], "command_flags": [ - "readonly" + "readonly", + "module" ], - "hints": [ - "nondeterministic_output_order" - ] + "module": "search" }, - "INCR": { - "summary": "Increments the integer value of a key by one. Uses 0 as initial value if the key doesn't exist.", + "FT.SUGLEN": { + "summary": "Gets the size of an auto-complete suggestion dictionary", "since": "1.0.0", - "group": "string", + "group": "module", "complexity": "O(1)", "acl_categories": [ - "@write", - "@string", - "@fast" + "@read", + "@search" ], "arity": 2, "key_specs": [ @@ -10502,683 +11969,955 @@ "arguments": [ { "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "type": "string", + "display_text": "key" } ], + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "FT.SYNADD": { + "group": "module", + "acl_categories": [ + "@search" + ], + "arity": -1, "command_flags": [ "write", "denyoom", - "fast" - ] + "module" + ], + "module": "search" }, - "INCRBY": { - "summary": "Increments the integer value of a key by a number. Uses 0 as initial value if the key doesn't exist.", - "since": "1.0.0", - "group": "string", + "FT.SYNDUMP": { + "summary": "Dumps the contents of a synonym group", + "since": "1.2.0", + "group": "module", "complexity": "O(1)", "acl_categories": [ - "@write", - "@string", - "@fast" + "@search" ], - "arity": 3, - "key_specs": [ + "arity": 2, + "arguments": [ { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true + "name": "index", + "type": "string", + "display_text": "index", + "summary": "Specifies the name of the index. The index must be created using `FT.CREATE`." } ], + "command_flags": [ + "readonly", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" + }, + "FT.SYNUPDATE": { + "summary": "Creates or updates a synonym group with additional terms", + "since": "1.2.0", + "group": "module", + "complexity": "O(1)", + "acl_categories": [ + "@search" + ], + "arity": -4, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "index", + "type": "string", + "display_text": "index", + "summary": "Specifies the name of the index. The index must be created using `FT.CREATE`." }, { - "name": "increment", - "type": "integer", - "display_text": "increment" + "name": "synonym_group_id", + "type": "string", + "display_text": "synonym_group_id" + }, + { + "name": "skipinitialscan", + "type": "pure-token", + "display_text": "skipinitialscan", + "token": "SKIPINITIALSCAN", + "summary": "Skips the initial scan of the database when creating the index.", + "optional": true + }, + { + "name": "term", + "type": "string", + "display_text": "term", + "multiple": true } ], "command_flags": [ "write", "denyoom", - "fast" - ] + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" }, - "INCRBYFLOAT": { - "summary": "Increment the floating point value of a key by a number. Uses 0 as initial value if the key doesn't exist.", - "since": "2.6.0", - "group": "string", - "complexity": "O(1)", + "FT.TAGVALS": { + "summary": "Returns the distinct tags indexed in a Tag field", + "since": "1.0.0", + "group": "module", + "complexity": "O(N)", "acl_categories": [ - "@write", - "@string", - "@fast" + "@read", + "@slow", + "@dangerous", + "@search" ], "arity": 3, - "key_specs": [ + "arguments": [ { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true + "name": "index", + "type": "string", + "display_text": "index", + "summary": "Specifies the name of the index. The index must be created using `FT.CREATE`." + }, + { + "name": "field_name", + "type": "string", + "display_text": "field_name" } ], + "command_flags": [ + "readonly", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" + }, + "FT._ALIASADDIFNX": { + "summary": "Adds an alias to the index", + "since": "1.0.0", + "group": "module", + "complexity": "O(1)", + "acl_categories": [ + "@search" + ], + "arity": 3, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "alias", + "type": "string", + "display_text": "alias" }, { - "name": "increment", - "type": "double", - "display_text": "increment" + "name": "index", + "type": "string", + "display_text": "index", + "summary": "Specifies the name of the index. The index must be created using `FT.CREATE`." } ], "command_flags": [ "write", "denyoom", - "fast" - ] + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" }, - "INCREX": { - "summary": "Increments the numeric value of a key by a number and sets its expiration time. Uses 0 as initial value if the key doesn't exist.", - "since": "8.8.0", - "group": "string", + "FT._ALIASDELIFX": { + "summary": "Deletes an alias from the index", + "since": "1.0.0", + "group": "module", "complexity": "O(1)", "acl_categories": [ - "@write", - "@string", - "@fast" + "@search" ], - "arity": -2, - "key_specs": [ + "arity": 2, + "arguments": [ { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true + "name": "alias", + "type": "string", + "display_text": "alias" } ], + "command_flags": [ + "write", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" + }, + "FT._ALTERIFNX": { + "summary": "Adds a new field to the index", + "since": "1.0.0", + "group": "module", + "complexity": "O(N) where N is the number of keys in the keyspace", + "acl_categories": [ + "@search" + ], + "arity": -6, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "index", + "type": "string", + "display_text": "index", + "summary": "Specifies the name of the index. The index must be created using `FT.CREATE`." }, { - "name": "increment", + "name": "skipinitialscan", + "type": "pure-token", + "display_text": "skipinitialscan", + "token": "SKIPINITIALSCAN", + "summary": "Skips the initial scan of the database when creating the index.", + "optional": true + }, + { + "name": "schema", + "type": "pure-token", + "display_text": "schema", + "token": "SCHEMA", + "summary": "Defines the fields in the index and their properties, such as type (`TEXT`, `TAG`, `NUMERIC`, etc.)." + }, + { + "name": "add", + "type": "pure-token", + "display_text": "add", + "token": "ADD" + }, + { + "name": "field", + "type": "string", + "display_text": "field", + "summary": "Specifies a field in the index schema with its properties." + }, + { + "name": "options", + "type": "string", + "display_text": "options" + } + ], + "command_flags": [ + "write", + "denyoom", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" + }, + "FT._CREATEIFNX": { + "summary": "Creates an index with the given spec", + "since": "1.0.0", + "group": "module", + "complexity": "O(K) at creation where K is the number of fields, O(N) if scanning the keyspace is triggered, where N is the number of keys in the keyspace", + "history": [ + [ + "2.0.0", + "Added `PAYLOAD_FIELD` argument for backward support of `FT.SEARCH` deprecated `WITHPAYLOADS` argument" + ], + [ + "2.0.0", + "Deprecated `PAYLOAD_FIELD` argument" + ] + ], + "acl_categories": [ + "@search" + ], + "arity": -5, + "arguments": [ + { + "name": "index", + "type": "string", + "display_text": "index", + "summary": "Specifies the name of the index." + }, + { + "name": "data_type", "type": "oneof", + "token": "ON", + "summary": "Specifies the type of data to index, such as HASH or JSON.", "optional": true, "arguments": [ { - "name": "float", - "type": "double", - "display_text": "float", - "token": "BYFLOAT" + "name": "hash", + "type": "pure-token", + "display_text": "hash", + "token": "HASH" }, { - "name": "integer", - "type": "integer", - "display_text": "integer", - "token": "BYINT" + "name": "json", + "type": "pure-token", + "display_text": "json", + "token": "JSON" } ] }, { - "name": "overflow-block", + "name": "indexall", "type": "oneof", - "token": "OVERFLOW", - "summary": "Out-of-bounds policy; defaults to FAIL. Missing LBOUND/UBOUND default to the type limits (LLONG_MIN/LLONG_MAX for BYINT, -LDBL_MAX/LDBL_MAX for BYFLOAT).", + "token": "INDEXALL", + "summary": "When enabled, maintains an inverted index of all document IDs to optimize wildcard queries in heavy update scenarios.", + "since": "8.0.0", "optional": true, "arguments": [ { - "name": "fail", + "name": "enable", "type": "pure-token", - "display_text": "fail", - "token": "FAIL" + "display_text": "enable", + "token": "ENABLE", + "summary": "Maintains an inverted index of all document IDs for wildcard queries." }, { - "name": "sat", + "name": "disable", "type": "pure-token", - "display_text": "sat", - "token": "SAT" + "display_text": "disable", + "token": "DISABLE", + "summary": "Does not maintain an inverted index of all document IDs (default behavior)." + } + ] + }, + { + "name": "prefix", + "type": "block", + "summary": "Filters indexed documents to include only keys that start with the specified prefix.", + "optional": true, + "arguments": [ + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "PREFIX" }, { - "name": "reject", - "type": "pure-token", - "display_text": "reject", - "token": "REJECT" + "name": "prefix", + "type": "string", + "display_text": "prefix", + "summary": "Filters indexed documents to include only keys that start with the specified prefix.", + "multiple": true } ] }, { - "name": "lowerbound", + "name": "filter", "type": "string", - "display_text": "lowerbound", - "token": "LBOUND", - "summary": "Integer when used with BYINT, floating-point when used with BYFLOAT.", + "display_text": "filter", + "token": "FILTER", + "summary": "Applies a numeric range filter to restrict results to documents with field values within the specified range.", "optional": true }, { - "name": "upperbound", + "name": "default_lang", "type": "string", - "display_text": "upperbound", - "token": "UBOUND", - "summary": "Integer when used with BYINT, floating-point when used with BYFLOAT.", + "display_text": "default_lang", + "token": "LANGUAGE", + "summary": "Defines the default language for the index.", "optional": true }, { - "name": "expiration", - "type": "oneof", + "name": "lang_attribute", + "type": "string", + "display_text": "lang_attribute", + "token": "LANGUAGE_FIELD", + "summary": "Specifies the attribute from which the language is determined.", + "optional": true + }, + { + "name": "default_score", + "type": "double", + "display_text": "default_score", + "token": "SCORE", + "summary": "Sets the default score for documents in the index.", + "optional": true + }, + { + "name": "score_attribute", + "type": "string", + "display_text": "score_attribute", + "token": "SCORE_FIELD", + "summary": "Specifies the attribute from which the score is derived.", + "optional": true + }, + { + "name": "payload_attribute", + "type": "string", + "display_text": "payload_attribute", + "token": "PAYLOAD_FIELD", + "summary": "Defines the attribute used for payloads in the index.", + "optional": true + }, + { + "name": "maxtextfields", + "type": "pure-token", + "display_text": "maxtextfields", + "token": "MAXTEXTFIELDS", + "summary": "Increases the maximum number of text fields allowed in the schema.", + "optional": true + }, + { + "name": "seconds", + "type": "double", + "display_text": "seconds", + "token": "TEMPORARY", + "summary": "Specifies the duration (in seconds) for which the index remains active (temporary index).", + "optional": true + }, + { + "name": "nooffsets", + "type": "pure-token", + "display_text": "nooffsets", + "token": "NOOFFSETS", + "summary": "Disables storage of term offsets for index entries.", + "optional": true + }, + { + "name": "nohl", + "type": "pure-token", + "display_text": "nohl", + "token": "NOHL", + "summary": "Disables support for highlighting in search results.", + "optional": true + }, + { + "name": "nofields", + "type": "pure-token", + "display_text": "nofields", + "token": "NOFIELDS", + "summary": "Omits returning fields from search results.", + "optional": true + }, + { + "name": "nofreqs", + "type": "pure-token", + "display_text": "nofreqs", + "token": "NOFREQS", + "summary": "Disables storage of term frequencies in the index.", + "optional": true + }, + { + "name": "stopwords", + "type": "block", + "token": "STOPWORDS", + "summary": "Defines custom stop words for the index, which will be ignored during full-text search.", "optional": true, "arguments": [ { - "name": "seconds", + "name": "count", "type": "integer", - "display_text": "seconds", - "token": "EX" + "display_text": "count" }, { - "name": "milliseconds", - "type": "integer", - "display_text": "milliseconds", - "token": "PX" + "name": "stopword", + "type": "string", + "display_text": "stopword", + "optional": true, + "multiple": true + } + ] + }, + { + "name": "skipinitialscan", + "type": "pure-token", + "display_text": "skipinitialscan", + "token": "SKIPINITIALSCAN", + "summary": "Skips the initial scan of the database when creating the index.", + "optional": true + }, + { + "name": "schema", + "type": "pure-token", + "display_text": "schema", + "token": "SCHEMA", + "summary": "Defines the fields in the index and their properties, such as type (`TEXT`, `TAG`, `NUMERIC`, etc.)." + }, + { + "name": "field", + "type": "block", + "summary": "Specifies a field in the index schema with its properties.", + "multiple": true, + "arguments": [ + { + "name": "field_name", + "type": "string", + "display_text": "field_name" }, { - "name": "unix-time-seconds", - "type": "unix-time", - "display_text": "unix-time-seconds", - "token": "EXAT" + "name": "alias", + "type": "string", + "display_text": "alias", + "token": "AS", + "optional": true }, { - "name": "unix-time-milliseconds", - "type": "unix-time", - "display_text": "unix-time-milliseconds", - "token": "PXAT" + "name": "field_type", + "type": "oneof", + "arguments": [ + { + "name": "text", + "type": "pure-token", + "display_text": "text", + "token": "TEXT" + }, + { + "name": "tag", + "type": "pure-token", + "display_text": "tag", + "token": "TAG" + }, + { + "name": "numeric", + "type": "pure-token", + "display_text": "numeric", + "token": "NUMERIC" + }, + { + "name": "geo", + "type": "pure-token", + "display_text": "geo", + "token": "GEO" + }, + { + "name": "geoshape", + "type": "pure-token", + "display_text": "geoshape", + "token": "GEOSHAPE" + }, + { + "name": "vector", + "type": "pure-token", + "display_text": "vector", + "token": "VECTOR" + } + ] }, { - "name": "persist", + "name": "withsuffixtrie", "type": "pure-token", - "display_text": "persist", - "token": "PERSIST" + "display_text": "withsuffixtrie", + "token": "WITHSUFFIXTRIE", + "optional": true + }, + { + "name": "INDEXEMPTY", + "type": "pure-token", + "display_text": "INDEXEMPTY", + "token": "INDEXEMPTY", + "optional": true + }, + { + "name": "indexmissing", + "type": "pure-token", + "display_text": "indexmissing", + "token": "INDEXMISSING", + "optional": true + }, + { + "name": "sortable", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "sortable", + "type": "pure-token", + "display_text": "sortable", + "token": "SORTABLE" + }, + { + "name": "UNF", + "type": "pure-token", + "display_text": "UNF", + "token": "UNF", + "optional": true + } + ] + }, + { + "name": "noindex", + "type": "pure-token", + "display_text": "noindex", + "token": "NOINDEX", + "optional": true } ] - }, - { - "name": "enx", - "type": "pure-token", - "display_text": "enx", - "token": "ENX", - "summary": "Only set the expiration if the key currently has no TTL. Requires one of EX/PX/EXAT/PXAT; cannot be combined with PERSIST.", - "optional": true } ], "command_flags": [ "write", "denyoom", - "fast" - ] - }, - "INFO": { - "summary": "Returns information and statistics about the server.", - "since": "1.0.0", - "group": "server", - "complexity": "O(1)", - "history": [ - [ - "7.0.0", - "Added support for taking multiple section arguments." - ] + "module" + ], + "hints": [ + "dont_cache" ], + "module": "search" + }, + "FT._DROPIFX": { + "group": "module", "acl_categories": [ - "@slow", - "@dangerous" + "@write", + "@search" ], "arity": -1, - "arguments": [ - { - "name": "section", - "type": "string", - "display_text": "section", - "optional": true, - "multiple": true - } - ], "command_flags": [ - "loading", - "stale" + "write", + "module" ], - "hints": [ - "nondeterministic_output", - "request_policy:all_shards", - "response_policy:special" - ] + "module": "search" }, - "KEYS": { - "summary": "Returns all key names that match a pattern.", - "since": "1.0.0", - "group": "generic", - "complexity": "O(N) with N being the number of keys in the database, under the assumption that the key names in the database and the given pattern have limited length.", + "FT._DROPINDEXIFX": { + "summary": "Deletes the index", + "since": "2.0.0", + "group": "module", + "complexity": "O(1) or O(N) if documents are deleted, where N is the number of keys in the keyspace", "acl_categories": [ - "@keyspace", - "@read", + "@write", "@slow", - "@dangerous" + "@dangerous", + "@search" ], - "arity": 2, + "arity": -2, "arguments": [ { - "name": "pattern", - "type": "pattern", - "display_text": "pattern" + "name": "index", + "type": "string", + "display_text": "index", + "summary": "Specifies the name of the index. The index must be created using `FT.CREATE`." + }, + { + "name": "delete docs", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "delete docs", + "type": "pure-token", + "display_text": "delete docs", + "token": "DD" + } + ] } ], "command_flags": [ - "readonly" + "write", + "module" ], "hints": [ - "request_policy:all_shards", - "nondeterministic_output_order" - ] + "dont_cache" + ], + "module": "search" }, - "LASTSAVE": { - "summary": "Returns the Unix timestamp of the last successful save to disk.", - "since": "1.0.0", - "group": "server", + "FT._LIST": { + "summary": "Returns a list of all existing indexes", + "since": "2.0.0", + "group": "module", "complexity": "O(1)", "acl_categories": [ "@admin", - "@fast", - "@dangerous" + "@slow", + "@search" ], - "arity": 1, + "arity": -1, "command_flags": [ - "loading", - "stale", - "fast" + "readonly", + "module" ], "hints": [ - "nondeterministic_output" - ] + "dont_cache" + ], + "module": "search" }, - "LATENCY": { - "summary": "A container for latency diagnostics commands.", - "since": "2.8.13", - "group": "server", + "FUNCTION": { + "summary": "A container for function commands.", + "since": "7.0.0", + "group": "scripting", "complexity": "Depends on subcommand.", "acl_categories": [ "@slow" ], "arity": -2 }, - "LATENCY DOCTOR": { - "summary": "Returns a human-readable latency analysis report.", - "since": "2.8.13", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" - ], - "hints": [ - "nondeterministic_output", - "request_policy:all_nodes", - "response_policy:special" - ] - }, - "LATENCY GRAPH": { - "summary": "Returns a latency graph for an event.", - "since": "2.8.13", - "group": "server", + "FUNCTION DELETE": { + "summary": "Deletes a library and its functions.", + "since": "7.0.0", + "group": "scripting", "complexity": "O(1)", "acl_categories": [ - "@admin", + "@write", "@slow", - "@dangerous" + "@scripting" ], "arity": 3, "arguments": [ { - "name": "event", + "name": "library-name", "type": "string", - "display_text": "event" + "display_text": "library-name" } ], "command_flags": [ - "admin", - "noscript", - "loading", - "stale" + "write", + "noscript" ], "hints": [ - "nondeterministic_output", - "request_policy:all_nodes", - "response_policy:special" + "request_policy:all_shards", + "response_policy:all_succeeded" ] }, - "LATENCY HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "2.8.13", - "group": "server", - "complexity": "O(1)", + "FUNCTION DUMP": { + "summary": "Dumps all libraries into a serialized binary payload.", + "since": "7.0.0", + "group": "scripting", + "complexity": "O(N) where N is the number of functions", "acl_categories": [ - "@slow" + "@slow", + "@scripting" ], "arity": 2, "command_flags": [ - "loading", - "stale" + "noscript" ] }, - "LATENCY HISTOGRAM": { - "summary": "Returns the cumulative distribution of latencies of a subset or all commands.", + "FUNCTION FLUSH": { + "summary": "Deletes all libraries and functions.", "since": "7.0.0", - "group": "server", - "complexity": "O(N) where N is the number of commands with latency information being retrieved.", + "group": "scripting", + "complexity": "O(N) where N is the number of functions deleted", "acl_categories": [ - "@admin", + "@write", "@slow", - "@dangerous" + "@scripting" ], "arity": -2, "arguments": [ { - "name": "command", - "type": "string", - "display_text": "command", + "name": "flush-type", + "type": "oneof", "optional": true, - "multiple": true + "arguments": [ + { + "name": "async", + "type": "pure-token", + "display_text": "async", + "token": "ASYNC" + }, + { + "name": "sync", + "type": "pure-token", + "display_text": "sync", + "token": "SYNC" + } + ] } ], "command_flags": [ - "admin", - "noscript", - "loading", - "stale" + "write", + "noscript" ], "hints": [ - "nondeterministic_output", - "request_policy:all_nodes", - "response_policy:special" + "request_policy:all_shards", + "response_policy:all_succeeded" ] }, - "LATENCY HISTORY": { - "summary": "Returns timestamp-latency samples for an event.", - "since": "2.8.13", - "group": "server", + "FUNCTION HELP": { + "summary": "Returns helpful text about the different subcommands.", + "since": "7.0.0", + "group": "scripting", "complexity": "O(1)", "acl_categories": [ - "@admin", "@slow", - "@dangerous" - ], - "arity": 3, - "arguments": [ - { - "name": "event", - "type": "string", - "display_text": "event" - } + "@scripting" ], + "arity": 2, "command_flags": [ - "admin", - "noscript", "loading", "stale" - ], - "hints": [ - "nondeterministic_output", - "request_policy:all_nodes", - "response_policy:special" ] }, - "LATENCY LATEST": { - "summary": "Returns the latest latency samples for all events.", - "since": "2.8.13", - "group": "server", + "FUNCTION KILL": { + "summary": "Terminates a function during execution.", + "since": "7.0.0", + "group": "scripting", "complexity": "O(1)", "acl_categories": [ - "@admin", "@slow", - "@dangerous" + "@scripting" ], "arity": 2, "command_flags": [ - "admin", "noscript", - "loading", - "stale" + "allow_busy" ], "hints": [ - "nondeterministic_output", - "request_policy:all_nodes", - "response_policy:special" + "request_policy:all_shards", + "response_policy:one_succeeded" ] }, - "LATENCY RESET": { - "summary": "Resets the latency data for one or more events.", - "since": "2.8.13", - "group": "server", - "complexity": "O(1)", + "FUNCTION LIST": { + "summary": "Returns information about all libraries.", + "since": "7.0.0", + "group": "scripting", + "complexity": "O(N) where N is the number of functions", "acl_categories": [ - "@admin", "@slow", - "@dangerous" + "@scripting" ], "arity": -2, "arguments": [ { - "name": "event", + "name": "library-name-pattern", "type": "string", - "display_text": "event", - "optional": true, - "multiple": true + "display_text": "library-name-pattern", + "token": "LIBRARYNAME", + "optional": true + }, + { + "name": "withcode", + "type": "pure-token", + "display_text": "withcode", + "token": "WITHCODE", + "optional": true } ], "command_flags": [ - "admin", - "noscript", - "loading", - "stale" + "noscript" ], "hints": [ - "request_policy:all_nodes", - "response_policy:agg_sum" + "nondeterministic_output_order" ] }, - "LCS": { - "summary": "Finds the longest common substring.", + "FUNCTION LOAD": { + "summary": "Creates a library.", "since": "7.0.0", - "group": "string", - "complexity": "O(N*M) where N and M are the lengths of s1 and s2, respectively", + "group": "scripting", + "complexity": "O(1) (considering compilation time is redundant)", "acl_categories": [ - "@read", - "@string", - "@slow" + "@write", + "@slow", + "@scripting" ], "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 1, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], "arguments": [ { - "name": "key1", - "type": "key", - "display_text": "key1", - "key_spec_index": 0 - }, - { - "name": "key2", - "type": "key", - "display_text": "key2", - "key_spec_index": 0 - }, - { - "name": "len", - "type": "pure-token", - "display_text": "len", - "token": "LEN", - "optional": true - }, - { - "name": "idx", + "name": "replace", "type": "pure-token", - "display_text": "idx", - "token": "IDX", - "optional": true - }, - { - "name": "min-match-len", - "type": "integer", - "display_text": "min-match-len", - "token": "MINMATCHLEN", + "display_text": "replace", + "token": "REPLACE", "optional": true }, { - "name": "withmatchlen", - "type": "pure-token", - "display_text": "withmatchlen", - "token": "WITHMATCHLEN", - "optional": true + "name": "function-code", + "type": "string", + "display_text": "function-code" } ], "command_flags": [ - "readonly" + "write", + "denyoom", + "noscript" + ], + "hints": [ + "request_policy:all_shards", + "response_policy:all_succeeded" ] }, - "LINDEX": { - "summary": "Returns an element from a list by its index.", - "since": "1.0.0", - "group": "list", - "complexity": "O(N) where N is the number of elements to traverse to get to the element at index. This makes asking for the first or the last element of the list O(1).", + "FUNCTION RESTORE": { + "summary": "Restores all libraries from a payload.", + "since": "7.0.0", + "group": "scripting", + "complexity": "O(N) where N is the number of functions on the payload", "acl_categories": [ - "@read", - "@list", - "@slow" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } + "@write", + "@slow", + "@scripting" ], + "arity": -3, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "serialized-value", + "type": "string", + "display_text": "serialized-value" }, { - "name": "index", - "type": "integer", - "display_text": "index" + "name": "policy", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "flush", + "type": "pure-token", + "display_text": "flush", + "token": "FLUSH" + }, + { + "name": "append", + "type": "pure-token", + "display_text": "append", + "token": "APPEND" + }, + { + "name": "replace", + "type": "pure-token", + "display_text": "replace", + "token": "REPLACE" + } + ] } ], "command_flags": [ - "readonly" + "write", + "denyoom", + "noscript" + ], + "hints": [ + "request_policy:all_shards", + "response_policy:all_succeeded" ] }, - "LINSERT": { - "summary": "Inserts an element before or after another element in a list.", - "since": "2.2.0", - "group": "list", - "complexity": "O(N) where N is the number of elements to traverse before seeing the value pivot. This means that inserting somewhere on the left end on the list (head) can be considered O(1) and inserting somewhere on the right end (tail) is O(N).", + "FUNCTION STATS": { + "summary": "Returns information about a function during execution.", + "since": "7.0.0", + "group": "scripting", + "complexity": "O(1)", + "acl_categories": [ + "@slow", + "@scripting" + ], + "arity": 2, + "command_flags": [ + "noscript", + "allow_busy" + ], + "hints": [ + "nondeterministic_output", + "request_policy:all_shards", + "response_policy:special" + ] + }, + "GEOADD": { + "summary": "Adds one or more members to a geospatial index. The key is created if it doesn't exist.", + "since": "3.2.0", + "group": "geo", + "complexity": "O(log(N)) for each item added, where N is the number of elements in the sorted set.", + "history": [ + [ + "6.2.0", + "Added the `CH`, `NX` and `XX` options." + ] + ], "acl_categories": [ "@write", - "@list", + "@geo", "@slow" ], - "arity": 5, + "arity": -5, "key_specs": [ { "begin_search": { @@ -11196,7 +12935,7 @@ } }, "RW": true, - "insert": true + "update": true } ], "arguments": [ @@ -11207,32 +12946,54 @@ "key_spec_index": 0 }, { - "name": "where", + "name": "condition", "type": "oneof", + "since": "6.2.0", + "optional": true, "arguments": [ { - "name": "before", + "name": "nx", "type": "pure-token", - "display_text": "before", - "token": "BEFORE" + "display_text": "nx", + "token": "NX" }, { - "name": "after", + "name": "xx", "type": "pure-token", - "display_text": "after", - "token": "AFTER" + "display_text": "xx", + "token": "XX" } ] }, { - "name": "pivot", - "type": "string", - "display_text": "pivot" + "name": "change", + "type": "pure-token", + "display_text": "change", + "token": "CH", + "since": "6.2.0", + "optional": true }, { - "name": "element", - "type": "string", - "display_text": "element" + "name": "data", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "longitude", + "type": "double", + "display_text": "longitude" + }, + { + "name": "latitude", + "type": "double", + "display_text": "latitude" + }, + { + "name": "member", + "type": "string", + "display_text": "member" + } + ] } ], "command_flags": [ @@ -11240,17 +13001,17 @@ "denyoom" ] }, - "LLEN": { - "summary": "Returns the length of a list.", - "since": "1.0.0", - "group": "list", + "GEODIST": { + "summary": "Returns the distance between two members of a geospatial index.", + "since": "3.2.0", + "group": "geo", "complexity": "O(1)", "acl_categories": [ "@read", - "@list", - "@fast" + "@geo", + "@slow" ], - "arity": 2, + "arity": -4, "key_specs": [ { "begin_search": { @@ -11267,7 +13028,8 @@ "limit": 0 } }, - "RO": true + "RO": true, + "access": true } ], "arguments": [ @@ -11276,24 +13038,64 @@ "type": "key", "display_text": "key", "key_spec_index": 0 + }, + { + "name": "member1", + "type": "string", + "display_text": "member1" + }, + { + "name": "member2", + "type": "string", + "display_text": "member2" + }, + { + "name": "unit", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "m", + "type": "pure-token", + "display_text": "m", + "token": "M" + }, + { + "name": "km", + "type": "pure-token", + "display_text": "km", + "token": "KM" + }, + { + "name": "ft", + "type": "pure-token", + "display_text": "ft", + "token": "FT" + }, + { + "name": "mi", + "type": "pure-token", + "display_text": "mi", + "token": "MI" + } + ] } ], "command_flags": [ - "readonly", - "fast" + "readonly" ] }, - "LMOVE": { - "summary": "Returns an element after popping it from one list and pushing it to another. Deletes the list if the last element was moved.", - "since": "6.2.0", - "group": "list", - "complexity": "O(1)", + "GEOHASH": { + "summary": "Returns members from a geospatial index as geohash strings.", + "since": "3.2.0", + "group": "geo", + "complexity": "O(1) for each member requested.", "acl_categories": [ - "@write", - "@list", + "@read", + "@geo", "@slow" ], - "arity": 5, + "arity": -2, "key_specs": [ { "begin_search": { @@ -11310,15 +13112,46 @@ "limit": 0 } }, - "RW": true, - "access": true, - "delete": true + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 }, + { + "name": "member", + "type": "string", + "display_text": "member", + "optional": true, + "multiple": true + } + ], + "command_flags": [ + "readonly" + ] + }, + "GEOPOS": { + "summary": "Returns the longitude and latitude of members from a geospatial index.", + "since": "3.2.0", + "group": "geo", + "complexity": "O(1) for each member requested.", + "acl_categories": [ + "@read", + "@geo", + "@slow" + ], + "arity": -2, + "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 2 + "index": 1 } }, "find_keys": { @@ -11329,76 +13162,52 @@ "limit": 0 } }, - "RW": true, - "insert": true + "RO": true, + "access": true } ], "arguments": [ { - "name": "source", + "name": "key", "type": "key", - "display_text": "source", + "display_text": "key", "key_spec_index": 0 }, { - "name": "destination", - "type": "key", - "display_text": "destination", - "key_spec_index": 1 - }, - { - "name": "wherefrom", - "type": "oneof", - "arguments": [ - { - "name": "left", - "type": "pure-token", - "display_text": "left", - "token": "LEFT" - }, - { - "name": "right", - "type": "pure-token", - "display_text": "right", - "token": "RIGHT" - } - ] - }, - { - "name": "whereto", - "type": "oneof", - "arguments": [ - { - "name": "left", - "type": "pure-token", - "display_text": "left", - "token": "LEFT" - }, - { - "name": "right", - "type": "pure-token", - "display_text": "right", - "token": "RIGHT" - } - ] + "name": "member", + "type": "string", + "display_text": "member", + "optional": true, + "multiple": true } ], "command_flags": [ - "write", - "denyoom" + "readonly" ] }, - "LMPOP": { - "summary": "Returns multiple elements from a list after removing them. Deletes the list if the last element was popped.", - "since": "7.0.0", - "group": "list", - "complexity": "O(N+M) where N is the number of provided keys and M is the number of elements returned.", + "GEORADIUS": { + "summary": "Queries a geospatial index for members within a distance from a coordinate, optionally stores the result.", + "since": "3.2.0", + "group": "geo", + "complexity": "O(N+log(M)) where N is the number of elements inside the bounding box of the circular area delimited by center and radius and M is the number of items inside the index.", + "deprecated_since": "6.2.0", + "replaced_by": "`GEOSEARCH` and `GEOSEARCHSTORE` with the `BYRADIUS` argument", + "history": [ + [ + "6.2.0", + "Added the `ANY` option for `COUNT`." + ], + [ + "7.0.0", + "Added support for uppercase unit names." + ] + ], "acl_categories": [ "@write", - "@list", + "@geo", "@slow" ], - "arity": -4, + "arity": -6, "key_specs": [ { "begin_search": { @@ -11408,102 +13217,226 @@ } }, "find_keys": { - "type": "keynum", + "type": "range", "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 + "lastkey": 0, + "keystep": 1, + "limit": 0 } }, - "RW": true, - "access": true, - "delete": true - } - ], - "arguments": [ - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" + "RO": true, + "access": true }, { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true + "notes": "Incomplete because duplicate STORE options use last-wins; fall back to georadiusGetKeys", + "begin_search": { + "type": "keyword", + "spec": { + "keyword": "STORE", + "startfrom": 6 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "OW": true, + "update": true, + "incomplete": true }, { - "name": "where", + "notes": "Incomplete because duplicate STOREDIST options use last-wins; fall back to georadiusGetKeys", + "begin_search": { + "type": "keyword", + "spec": { + "keyword": "STOREDIST", + "startfrom": 6 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "OW": true, + "update": true, + "incomplete": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "longitude", + "type": "double", + "display_text": "longitude" + }, + { + "name": "latitude", + "type": "double", + "display_text": "latitude" + }, + { + "name": "radius", + "type": "double", + "display_text": "radius" + }, + { + "name": "unit", "type": "oneof", "arguments": [ { - "name": "left", + "name": "m", "type": "pure-token", - "display_text": "left", - "token": "LEFT" + "display_text": "m", + "token": "M" }, { - "name": "right", + "name": "km", "type": "pure-token", - "display_text": "right", - "token": "RIGHT" + "display_text": "km", + "token": "KM" + }, + { + "name": "ft", + "type": "pure-token", + "display_text": "ft", + "token": "FT" + }, + { + "name": "mi", + "type": "pure-token", + "display_text": "mi", + "token": "MI" } ] }, { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", + "name": "withcoord", + "type": "pure-token", + "display_text": "withcoord", + "token": "WITHCOORD", "optional": true + }, + { + "name": "withdist", + "type": "pure-token", + "display_text": "withdist", + "token": "WITHDIST", + "optional": true + }, + { + "name": "withhash", + "type": "pure-token", + "display_text": "withhash", + "token": "WITHHASH", + "optional": true + }, + { + "name": "count-block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "COUNT" + }, + { + "name": "any", + "type": "pure-token", + "display_text": "any", + "token": "ANY", + "since": "6.2.0", + "optional": true + } + ] + }, + { + "name": "order", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "asc", + "type": "pure-token", + "display_text": "asc", + "token": "ASC" + }, + { + "name": "desc", + "type": "pure-token", + "display_text": "desc", + "token": "DESC" + } + ] + }, + { + "name": "store", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "storekey", + "type": "key", + "display_text": "key", + "key_spec_index": 1, + "token": "STORE" + }, + { + "name": "storedistkey", + "type": "key", + "display_text": "key", + "key_spec_index": 2, + "token": "STOREDIST" + } + ] } ], "command_flags": [ "write", + "denyoom", "movablekeys" - ] - }, - "LOLWUT": { - "summary": "Displays computer art and the Redis version", - "since": "5.0.0", - "group": "server", - "acl_categories": [ - "@read", - "@fast" - ], - "arity": -1, - "arguments": [ - { - "name": "version", - "type": "integer", - "display_text": "version", - "token": "VERSION", - "optional": true - } ], - "command_flags": [ - "readonly", - "fast" + "doc_flags": [ + "deprecated" ] }, - "LPOP": { - "summary": "Returns the first elements in a list after removing it. Deletes the list if the last element was popped.", - "since": "1.0.0", - "group": "list", - "complexity": "O(N) where N is the number of elements returned", + "GEORADIUSBYMEMBER": { + "summary": "Queries a geospatial index for members within a distance from a member, optionally stores the result.", + "since": "3.2.0", + "group": "geo", + "complexity": "O(N+log(M)) where N is the number of elements inside the bounding box of the circular area delimited by center and radius and M is the number of items inside the index.", + "deprecated_since": "6.2.0", + "replaced_by": "`GEOSEARCH` and `GEOSEARCHSTORE` with the `BYRADIUS` and `FROMMEMBER` arguments", "history": [ [ "6.2.0", - "Added the `count` argument." + "Added the `ANY` option for `COUNT`." + ], + [ + "7.0.0", + "Added support for uppercase unit names." ] ], "acl_categories": [ "@write", - "@list", - "@fast" + "@geo", + "@slow" ], - "arity": -2, + "arity": -5, "key_specs": [ { "begin_search": { @@ -11520,48 +13453,37 @@ "limit": 0 } }, - "RW": true, - "access": true, - "delete": true - } - ], - "arguments": [ + "RO": true, + "access": true + }, { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "notes": "Incomplete because duplicate STORE options use last-wins; fall back to georadiusGetKeys", + "begin_search": { + "type": "keyword", + "spec": { + "keyword": "STORE", + "startfrom": 5 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "OW": true, + "update": true, + "incomplete": true }, { - "name": "count", - "type": "integer", - "display_text": "count", - "since": "6.2.0", - "optional": true - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "LPOS": { - "summary": "Returns the index of matching elements in a list.", - "since": "6.0.6", - "group": "list", - "complexity": "O(N) where N is the number of elements in the list, for the average case. When searching for elements near the head or the tail of the list, or when the MAXLEN option is provided, the command may run in constant time.", - "acl_categories": [ - "@read", - "@list", - "@slow" - ], - "arity": -3, - "key_specs": [ - { + "notes": "Incomplete because duplicate STOREDIST options use last-wins; fall back to georadiusGetKeys", "begin_search": { - "type": "index", + "type": "keyword", "spec": { - "index": 1 + "keyword": "STOREDIST", + "startfrom": 5 } }, "find_keys": { @@ -11572,8 +13494,9 @@ "limit": 0 } }, - "RO": true, - "access": true + "OW": true, + "update": true, + "incomplete": true } ], "arguments": [ @@ -11584,110 +13507,159 @@ "key_spec_index": 0 }, { - "name": "element", + "name": "member", "type": "string", - "display_text": "element" + "display_text": "member" }, { - "name": "rank", - "type": "integer", - "display_text": "rank", - "token": "RANK", + "name": "radius", + "type": "double", + "display_text": "radius" + }, + { + "name": "unit", + "type": "oneof", + "arguments": [ + { + "name": "m", + "type": "pure-token", + "display_text": "m", + "token": "M" + }, + { + "name": "km", + "type": "pure-token", + "display_text": "km", + "token": "KM" + }, + { + "name": "ft", + "type": "pure-token", + "display_text": "ft", + "token": "FT" + }, + { + "name": "mi", + "type": "pure-token", + "display_text": "mi", + "token": "MI" + } + ] + }, + { + "name": "withcoord", + "type": "pure-token", + "display_text": "withcoord", + "token": "WITHCOORD", "optional": true }, { - "name": "num-matches", - "type": "integer", - "display_text": "num-matches", - "token": "COUNT", + "name": "withdist", + "type": "pure-token", + "display_text": "withdist", + "token": "WITHDIST", "optional": true }, { - "name": "len", - "type": "integer", - "display_text": "len", - "token": "MAXLEN", + "name": "withhash", + "type": "pure-token", + "display_text": "withhash", + "token": "WITHHASH", "optional": true - } - ], - "command_flags": [ - "readonly" - ] - }, - "LPUSH": { - "summary": "Prepends one or more elements to a list. Creates the key if it doesn't exist.", - "since": "1.0.0", - "group": "list", - "complexity": "O(1) for each element added, so O(N) to add N elements when the command is called with multiple arguments.", - "history": [ - [ - "2.4.0", - "Accepts multiple `element` arguments." - ] - ], - "acl_categories": [ - "@write", - "@list", - "@fast" - ], - "arity": -3, - "key_specs": [ + }, { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 + "name": "count-block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "COUNT" + }, + { + "name": "any", + "type": "pure-token", + "display_text": "any", + "token": "ANY", + "optional": true } - }, - "RW": true, - "insert": true - } - ], - "arguments": [ + ] + }, { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "order", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "asc", + "type": "pure-token", + "display_text": "asc", + "token": "ASC" + }, + { + "name": "desc", + "type": "pure-token", + "display_text": "desc", + "token": "DESC" + } + ] }, { - "name": "element", - "type": "string", - "display_text": "element", - "multiple": true + "name": "store", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "storekey", + "type": "key", + "display_text": "key", + "key_spec_index": 1, + "token": "STORE" + }, + { + "name": "storedistkey", + "type": "key", + "display_text": "key", + "key_spec_index": 2, + "token": "STOREDIST" + } + ] } ], "command_flags": [ "write", "denyoom", - "fast" + "movablekeys" + ], + "doc_flags": [ + "deprecated" ] }, - "LPUSHX": { - "summary": "Prepends one or more elements to a list only when the list exists.", - "since": "2.2.0", - "group": "list", - "complexity": "O(1) for each element added, so O(N) to add N elements when the command is called with multiple arguments.", + "GEORADIUSBYMEMBER_RO": { + "summary": "Returns members from a geospatial index that are within a distance from a member.", + "since": "3.2.10", + "group": "geo", + "complexity": "O(N+log(M)) where N is the number of elements inside the bounding box of the circular area delimited by center and radius and M is the number of items inside the index.", + "deprecated_since": "6.2.0", + "replaced_by": "`GEOSEARCH` with the `BYRADIUS` and `FROMMEMBER` arguments", "history": [ [ - "4.0.0", - "Accepts multiple `element` arguments." + "6.2.0", + "Added the `ANY` option for `COUNT`." + ], + [ + "7.0.0", + "Added support for uppercase unit names." ] ], "acl_categories": [ - "@write", - "@list", - "@fast" + "@read", + "@geo", + "@slow" ], - "arity": -3, + "arity": -5, "key_specs": [ { "begin_search": { @@ -11704,8 +13676,8 @@ "limit": 0 } }, - "RW": true, - "insert": true + "RO": true, + "access": true } ], "arguments": [ @@ -11716,82 +13688,136 @@ "key_spec_index": 0 }, { - "name": "element", + "name": "member", "type": "string", - "display_text": "element", - "multiple": true - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "LRANGE": { - "summary": "Returns a range of elements from a list.", - "since": "1.0.0", - "group": "list", - "complexity": "O(S+N) where S is the distance of start offset from HEAD for small lists, from nearest end (HEAD or TAIL) for large lists; and N is the number of elements in the specified range.", - "acl_categories": [ - "@read", - "@list", - "@slow" - ], - "arity": 4, - "key_specs": [ + "display_text": "member" + }, { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 + "name": "radius", + "type": "double", + "display_text": "radius" + }, + { + "name": "unit", + "type": "oneof", + "arguments": [ + { + "name": "m", + "type": "pure-token", + "display_text": "m", + "token": "M" + }, + { + "name": "km", + "type": "pure-token", + "display_text": "km", + "token": "KM" + }, + { + "name": "ft", + "type": "pure-token", + "display_text": "ft", + "token": "FT" + }, + { + "name": "mi", + "type": "pure-token", + "display_text": "mi", + "token": "MI" } - }, - "RO": true, - "access": true - } - ], - "arguments": [ + ] + }, { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "withcoord", + "type": "pure-token", + "display_text": "withcoord", + "token": "WITHCOORD", + "optional": true }, { - "name": "start", - "type": "integer", - "display_text": "start" + "name": "withdist", + "type": "pure-token", + "display_text": "withdist", + "token": "WITHDIST", + "optional": true }, { - "name": "stop", - "type": "integer", - "display_text": "stop" + "name": "withhash", + "type": "pure-token", + "display_text": "withhash", + "token": "WITHHASH", + "optional": true + }, + { + "name": "count-block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "COUNT" + }, + { + "name": "any", + "type": "pure-token", + "display_text": "any", + "token": "ANY", + "optional": true + } + ] + }, + { + "name": "order", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "asc", + "type": "pure-token", + "display_text": "asc", + "token": "ASC" + }, + { + "name": "desc", + "type": "pure-token", + "display_text": "desc", + "token": "DESC" + } + ] } ], "command_flags": [ "readonly" + ], + "doc_flags": [ + "deprecated" ] }, - "LREM": { - "summary": "Removes elements from a list. Deletes the list if the last element was removed.", - "since": "1.0.0", - "group": "list", - "complexity": "O(N+M) where N is the length of the list and M is the number of elements removed.", + "GEORADIUS_RO": { + "summary": "Returns members from a geospatial index that are within a distance from a coordinate.", + "since": "3.2.10", + "group": "geo", + "complexity": "O(N+log(M)) where N is the number of elements inside the bounding box of the circular area delimited by center and radius and M is the number of items inside the index.", + "deprecated_since": "6.2.0", + "replaced_by": "`GEOSEARCH` with the `BYRADIUS` argument", + "history": [ + [ + "6.2.0", + "Added the `ANY` option for `COUNT`." + ], + [ + "7.0.0", + "Added support for uppercase unit names." + ] + ], "acl_categories": [ - "@write", - "@list", + "@read", + "@geo", "@slow" ], - "arity": 4, + "arity": -6, "key_specs": [ { "begin_search": { @@ -11808,8 +13834,8 @@ "limit": 0 } }, - "RW": true, - "delete": true + "RO": true, + "access": true } ], "arguments": [ @@ -11820,226 +13846,142 @@ "key_spec_index": 0 }, { - "name": "count", - "type": "integer", - "display_text": "count" + "name": "longitude", + "type": "double", + "display_text": "longitude" }, { - "name": "element", - "type": "string", - "display_text": "element" - } - ], - "command_flags": [ - "write" - ] - }, - "LSET": { - "summary": "Sets the value of an element in a list by its index.", - "since": "1.0.0", - "group": "list", - "complexity": "O(N) where N is the length of the list. Setting either the first or the last element of the list is O(1).", - "acl_categories": [ - "@write", - "@list", - "@slow" - ], - "arity": 4, - "key_specs": [ + "name": "latitude", + "type": "double", + "display_text": "latitude" + }, { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 + "name": "radius", + "type": "double", + "display_text": "radius" + }, + { + "name": "unit", + "type": "oneof", + "arguments": [ + { + "name": "m", + "type": "pure-token", + "display_text": "m", + "token": "M" + }, + { + "name": "km", + "type": "pure-token", + "display_text": "km", + "token": "KM" + }, + { + "name": "ft", + "type": "pure-token", + "display_text": "ft", + "token": "FT" + }, + { + "name": "mi", + "type": "pure-token", + "display_text": "mi", + "token": "MI" } - }, - "RW": true, - "update": true - } - ], - "arguments": [ + ] + }, { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "withcoord", + "type": "pure-token", + "display_text": "withcoord", + "token": "WITHCOORD", + "optional": true }, { - "name": "index", - "type": "integer", - "display_text": "index" + "name": "withdist", + "type": "pure-token", + "display_text": "withdist", + "token": "WITHDIST", + "optional": true }, { - "name": "element", - "type": "string", - "display_text": "element" - } - ], - "command_flags": [ - "write", - "denyoom" - ] - }, - "LTRIM": { - "summary": "Removes elements from both ends a list. Deletes the list if all elements were trimmed.", - "since": "1.0.0", - "group": "list", - "complexity": "O(N) where N is the number of elements to be removed by the operation.", - "acl_categories": [ - "@write", - "@list", - "@slow" - ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "withhash", + "type": "pure-token", + "display_text": "withhash", + "token": "WITHHASH", + "optional": true }, { - "name": "start", - "type": "integer", - "display_text": "start" + "name": "count-block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "COUNT" + }, + { + "name": "any", + "type": "pure-token", + "display_text": "any", + "token": "ANY", + "since": "6.2.0", + "optional": true + } + ] }, { - "name": "stop", - "type": "integer", - "display_text": "stop" + "name": "order", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "asc", + "type": "pure-token", + "display_text": "asc", + "token": "ASC" + }, + { + "name": "desc", + "type": "pure-token", + "display_text": "desc", + "token": "DESC" + } + ] } ], "command_flags": [ - "write" - ] - }, - "MEMORY": { - "summary": "A container for memory diagnostics commands.", - "since": "4.0.0", - "group": "server", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" - ], - "arity": -2 - }, - "MEMORY DOCTOR": { - "summary": "Outputs a memory problems report.", - "since": "4.0.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@slow" - ], - "arity": 2, - "hints": [ - "nondeterministic_output", - "request_policy:all_shards", - "response_policy:special" - ] - }, - "MEMORY HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "4.0.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@slow" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "MEMORY MALLOC-STATS": { - "summary": "Returns the allocator statistics.", - "since": "4.0.0", - "group": "server", - "complexity": "Depends on how much memory is allocated, could be slow", - "acl_categories": [ - "@slow" - ], - "arity": 2, - "hints": [ - "nondeterministic_output", - "request_policy:all_shards", - "response_policy:special" - ] - }, - "MEMORY PURGE": { - "summary": "Asks the allocator to release memory.", - "since": "4.0.0", - "group": "server", - "complexity": "Depends on how much memory is allocated, could be slow", - "acl_categories": [ - "@slow" + "readonly" ], - "arity": 2, - "hints": [ - "request_policy:all_shards", - "response_policy:all_succeeded" + "doc_flags": [ + "deprecated" ] }, - "MEMORY STATS": { - "summary": "Returns details about memory usage.", - "since": "4.0.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@slow" + "GEOSEARCH": { + "summary": "Queries a geospatial index for members inside an area of a box or a circle.", + "since": "6.2.0", + "group": "geo", + "complexity": "O(N+log(M)) where N is the number of elements in the grid-aligned bounding box area around the shape provided as the filter and M is the number of items inside the shape", + "history": [ + [ + "7.0.0", + "Added support for uppercase unit names." + ] ], - "arity": 2, - "hints": [ - "nondeterministic_output", - "request_policy:all_shards", - "response_policy:special" - ] - }, - "MEMORY USAGE": { - "summary": "Estimates the memory usage of a key.", - "since": "4.0.0", - "group": "server", - "complexity": "O(N) where N is the number of samples.", "acl_categories": [ "@read", + "@geo", "@slow" ], - "arity": -3, + "arity": -7, "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 2 + "index": 1 } }, "find_keys": { @@ -12050,7 +13992,8 @@ "limit": 0 } }, - "RO": true + "RO": true, + "access": true } ], "arguments": [ @@ -12061,101 +14004,217 @@ "key_spec_index": 0 }, { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "SAMPLES", - "optional": true - } - ], - "command_flags": [ - "readonly" - ] - }, - "MGET": { - "summary": "Atomically returns the string values of one or more keys.", - "since": "1.0.0", - "group": "string", - "complexity": "O(N) where N is the number of keys to retrieve.", - "acl_categories": [ - "@read", - "@string", - "@fast" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 + "name": "from", + "type": "oneof", + "arguments": [ + { + "name": "member", + "type": "string", + "display_text": "member", + "token": "FROMMEMBER" + }, + { + "name": "fromlonlat", + "type": "block", + "token": "FROMLONLAT", + "arguments": [ + { + "name": "longitude", + "type": "double", + "display_text": "longitude" + }, + { + "name": "latitude", + "type": "double", + "display_text": "latitude" + } + ] } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 0 + ] + }, + { + "name": "by", + "type": "oneof", + "arguments": [ + { + "name": "circle", + "type": "block", + "arguments": [ + { + "name": "radius", + "type": "double", + "display_text": "radius", + "token": "BYRADIUS" + }, + { + "name": "unit", + "type": "oneof", + "arguments": [ + { + "name": "m", + "type": "pure-token", + "display_text": "m", + "token": "M" + }, + { + "name": "km", + "type": "pure-token", + "display_text": "km", + "token": "KM" + }, + { + "name": "ft", + "type": "pure-token", + "display_text": "ft", + "token": "FT" + }, + { + "name": "mi", + "type": "pure-token", + "display_text": "mi", + "token": "MI" + } + ] + } + ] + }, + { + "name": "box", + "type": "block", + "arguments": [ + { + "name": "width", + "type": "double", + "display_text": "width", + "token": "BYBOX" + }, + { + "name": "height", + "type": "double", + "display_text": "height" + }, + { + "name": "unit", + "type": "oneof", + "arguments": [ + { + "name": "m", + "type": "pure-token", + "display_text": "m", + "token": "M" + }, + { + "name": "km", + "type": "pure-token", + "display_text": "km", + "token": "KM" + }, + { + "name": "ft", + "type": "pure-token", + "display_text": "ft", + "token": "FT" + }, + { + "name": "mi", + "type": "pure-token", + "display_text": "mi", + "token": "MI" + } + ] + } + ] } - }, - "RO": true, - "access": true - } - ], - "arguments": [ + ] + }, { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true + "name": "order", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "asc", + "type": "pure-token", + "display_text": "asc", + "token": "ASC" + }, + { + "name": "desc", + "type": "pure-token", + "display_text": "desc", + "token": "DESC" + } + ] + }, + { + "name": "count-block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "COUNT" + }, + { + "name": "any", + "type": "pure-token", + "display_text": "any", + "token": "ANY", + "optional": true + } + ] + }, + { + "name": "withcoord", + "type": "pure-token", + "display_text": "withcoord", + "token": "WITHCOORD", + "optional": true + }, + { + "name": "withdist", + "type": "pure-token", + "display_text": "withdist", + "token": "WITHDIST", + "optional": true + }, + { + "name": "withhash", + "type": "pure-token", + "display_text": "withhash", + "token": "WITHHASH", + "optional": true } ], "command_flags": [ - "readonly", - "fast" - ], - "hints": [ - "request_policy:multi_shard" + "readonly" ] }, - "MIGRATE": { - "summary": "Atomically transfers a key from one Redis instance to another.", - "since": "2.6.0", - "group": "generic", - "complexity": "This command actually executes a DUMP+DEL in the source instance, and a RESTORE in the target instance. See the pages of these commands for time complexity. Also an O(N) data transfer between the two instances is performed.", + "GEOSEARCHSTORE": { + "summary": "Queries a geospatial index for members inside an area of a box or a circle, optionally stores the result.", + "since": "6.2.0", + "group": "geo", + "complexity": "O(N+log(M)) where N is the number of elements in the grid-aligned bounding box area around the shape provided as the filter and M is the number of items inside the shape", "history": [ [ - "3.0.0", - "Added the `COPY` and `REPLACE` options." - ], - [ - "3.0.6", - "Added the `KEYS` option." - ], - [ - "4.0.7", - "Added the `AUTH` option." - ], - [ - "6.0.0", - "Added the `AUTH2` option." + "7.0.0", + "Added support for uppercase unit names." ] ], "acl_categories": [ - "@keyspace", "@write", - "@slow", - "@dangerous" + "@geo", + "@slow" ], - "arity": -6, + "arity": -8, "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 3 + "index": 1 } }, "find_keys": { @@ -12166,316 +14225,321 @@ "limit": 0 } }, - "RW": true, - "access": true, - "delete": true + "OW": true, + "update": true }, { "begin_search": { - "type": "keyword", + "type": "index", "spec": { - "keyword": "KEYS", - "startfrom": -2 + "index": 2 } }, "find_keys": { "type": "range", "spec": { - "lastkey": -1, + "lastkey": 0, "keystep": 1, "limit": 0 } }, - "RW": true, - "access": true, - "delete": true, - "incomplete": true + "RO": true, + "access": true } ], "arguments": [ { - "name": "host", - "type": "string", - "display_text": "host" + "name": "destination", + "type": "key", + "display_text": "destination", + "key_spec_index": 0 }, { - "name": "port", - "type": "integer", - "display_text": "port" + "name": "source", + "type": "key", + "display_text": "source", + "key_spec_index": 1 }, { - "name": "key-selector", + "name": "from", "type": "oneof", "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "member", + "type": "string", + "display_text": "member", + "token": "FROMMEMBER" }, { - "name": "empty-string", - "type": "pure-token", - "display_text": "empty-string", - "token": "" + "name": "fromlonlat", + "type": "block", + "token": "FROMLONLAT", + "arguments": [ + { + "name": "longitude", + "type": "double", + "display_text": "longitude" + }, + { + "name": "latitude", + "type": "double", + "display_text": "latitude" + } + ] } ] }, { - "name": "destination-db", - "type": "integer", - "display_text": "destination-db" - }, - { - "name": "timeout", - "type": "integer", - "display_text": "timeout" - }, - { - "name": "copy", - "type": "pure-token", - "display_text": "copy", - "token": "COPY", - "since": "3.0.0", - "optional": true - }, - { - "name": "replace", - "type": "pure-token", - "display_text": "replace", - "token": "REPLACE", - "since": "3.0.0", - "optional": true - }, - { - "name": "authentication", + "name": "by", "type": "oneof", - "optional": true, "arguments": [ { - "name": "auth", - "type": "string", - "display_text": "password", - "token": "AUTH", - "since": "4.0.7" + "name": "circle", + "type": "block", + "arguments": [ + { + "name": "radius", + "type": "double", + "display_text": "radius", + "token": "BYRADIUS" + }, + { + "name": "unit", + "type": "oneof", + "arguments": [ + { + "name": "m", + "type": "pure-token", + "display_text": "m", + "token": "M" + }, + { + "name": "km", + "type": "pure-token", + "display_text": "km", + "token": "KM" + }, + { + "name": "ft", + "type": "pure-token", + "display_text": "ft", + "token": "FT" + }, + { + "name": "mi", + "type": "pure-token", + "display_text": "mi", + "token": "MI" + } + ] + } + ] }, { - "name": "auth2", + "name": "box", "type": "block", - "token": "AUTH2", - "since": "6.0.0", "arguments": [ { - "name": "username", - "type": "string", - "display_text": "username" + "name": "width", + "type": "double", + "display_text": "width", + "token": "BYBOX" }, { - "name": "password", - "type": "string", - "display_text": "password" + "name": "height", + "type": "double", + "display_text": "height" + }, + { + "name": "unit", + "type": "oneof", + "arguments": [ + { + "name": "m", + "type": "pure-token", + "display_text": "m", + "token": "M" + }, + { + "name": "km", + "type": "pure-token", + "display_text": "km", + "token": "KM" + }, + { + "name": "ft", + "type": "pure-token", + "display_text": "ft", + "token": "FT" + }, + { + "name": "mi", + "type": "pure-token", + "display_text": "mi", + "token": "MI" + } + ] } ] } ] }, { - "name": "keys", - "type": "key", - "display_text": "key", - "key_spec_index": 1, - "token": "KEYS", - "since": "3.0.6", + "name": "order", + "type": "oneof", "optional": true, - "multiple": true + "arguments": [ + { + "name": "asc", + "type": "pure-token", + "display_text": "asc", + "token": "ASC" + }, + { + "name": "desc", + "type": "pure-token", + "display_text": "desc", + "token": "DESC" + } + ] + }, + { + "name": "count-block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "COUNT" + }, + { + "name": "any", + "type": "pure-token", + "display_text": "any", + "token": "ANY", + "optional": true + } + ] + }, + { + "name": "storedist", + "type": "pure-token", + "display_text": "storedist", + "token": "STOREDIST", + "optional": true } ], "command_flags": [ "write", - "movablekeys" - ], - "hints": [ - "nondeterministic_output" + "denyoom" ] }, - "MODULE": { - "summary": "A container for module commands.", - "since": "4.0.0", - "group": "server", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" - ], - "arity": -2 - }, - "MODULE HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "5.0.0", - "group": "server", + "GET": { + "summary": "Returns the string value of a key.", + "since": "1.0.0", + "group": "string", "complexity": "O(1)", "acl_categories": [ - "@slow" + "@read", + "@string", + "@fast" ], "arity": 2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + } + ], "command_flags": [ - "loading", - "stale" + "readonly", + "fast" ] }, - "MODULE LIST": { - "summary": "Returns all loaded modules.", - "since": "4.0.0", - "group": "server", - "complexity": "O(N) where N is the number of loaded modules.", + "GETBIT": { + "summary": "Returns a bit value by offset.", + "since": "2.2.0", + "group": "bitmap", + "complexity": "O(1)", "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "noscript" - ], - "hints": [ - "nondeterministic_output_order" - ] - }, - "MODULE LOAD": { - "summary": "Loads a module.", - "since": "4.0.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" + "@read", + "@bitmap", + "@fast" ], - "arity": -3, - "arguments": [ - { - "name": "path", - "type": "string", - "display_text": "path" - }, + "arity": 3, + "key_specs": [ { - "name": "arg", - "type": "string", - "display_text": "arg", - "optional": true, - "multiple": true + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true } ], - "command_flags": [ - "admin", - "noscript", - "no_async_loading" - ] - }, - "MODULE LOADEX": { - "summary": "Loads a module using extended parameters.", - "since": "7.0.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -3, "arguments": [ { - "name": "path", - "type": "string", - "display_text": "path" - }, - { - "name": "configs", - "type": "block", - "token": "CONFIG", - "optional": true, - "multiple": true, - "multiple_token": true, - "arguments": [ - { - "name": "name", - "type": "string", - "display_text": "name" - }, - { - "name": "value", - "type": "string", - "display_text": "value" - } - ] + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 }, { - "name": "args", - "type": "string", - "display_text": "args", - "token": "ARGS", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "admin", - "noscript", - "no_async_loading" - ] - }, - "MODULE UNLOAD": { - "summary": "Unloads a module.", - "since": "4.0.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 3, - "arguments": [ - { - "name": "name", - "type": "string", - "display_text": "name" + "name": "offset", + "type": "integer", + "display_text": "offset" } ], "command_flags": [ - "admin", - "noscript", - "no_async_loading" - ] - }, - "MONITOR": { - "summary": "Listens for all requests received by the server in real-time.", - "since": "1.0.0", - "group": "server", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 1, - "command_flags": [ - "admin", - "noscript", - "loading", - "stale" + "readonly", + "fast" ] }, - "MOVE": { - "summary": "Moves a key to another database.", - "since": "1.0.0", - "group": "generic", + "GETDEL": { + "summary": "Returns the string value of a key after deleting the key.", + "since": "6.2.0", + "group": "string", "complexity": "O(1)", "acl_categories": [ - "@keyspace", "@write", + "@string", "@fast" ], - "arity": 3, + "arity": 2, "key_specs": [ { "begin_search": { @@ -12494,7 +14558,7 @@ }, "RW": true, "access": true, - "update": true + "delete": true } ], "arguments": [ @@ -12503,11 +14567,6 @@ "type": "key", "display_text": "key", "key_spec_index": 0 - }, - { - "name": "db", - "type": "integer", - "display_text": "db" } ], "command_flags": [ @@ -12515,19 +14574,20 @@ "fast" ] }, - "MSET": { - "summary": "Atomically creates or modifies the string values of one or more keys.", - "since": "1.0.1", + "GETEX": { + "summary": "Returns the string value of a key after setting its expiration time.", + "since": "6.2.0", "group": "string", - "complexity": "O(N) where N is the number of keys to set.", + "complexity": "O(1)", "acl_categories": [ "@write", "@string", - "@slow" + "@fast" ], - "arity": -3, + "arity": -2, "key_specs": [ { + "notes": "RW and UPDATE because it changes the TTL", "begin_search": { "type": "index", "spec": { @@ -12537,55 +14597,77 @@ "find_keys": { "type": "range", "spec": { - "lastkey": -1, - "keystep": 2, + "lastkey": 0, + "keystep": 1, "limit": 0 } }, - "OW": true, + "RW": true, + "access": true, "update": true } ], "arguments": [ { - "name": "data", - "type": "block", - "multiple": true, + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "expiration", + "type": "oneof", + "optional": true, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "seconds", + "type": "integer", + "display_text": "seconds", + "token": "EX" }, { - "name": "value", - "type": "string", - "display_text": "value" + "name": "milliseconds", + "type": "integer", + "display_text": "milliseconds", + "token": "PX" + }, + { + "name": "unix-time-seconds", + "type": "unix-time", + "display_text": "unix-time-seconds", + "token": "EXAT" + }, + { + "name": "unix-time-milliseconds", + "type": "unix-time", + "display_text": "unix-time-milliseconds", + "token": "PXAT" + }, + { + "name": "persist", + "type": "pure-token", + "display_text": "persist", + "token": "PERSIST" } ] } ], "command_flags": [ "write", - "denyoom" - ], - "hints": [ - "request_policy:multi_shard", - "response_policy:all_succeeded" + "fast" ] }, - "MSETEX": { - "summary": "Atomically sets multiple string keys with a shared expiration in a single operation. Supports flexible argument parsing where condition and expiration flags can appear in any order.", - "since": "8.4.0", + "GETRANGE": { + "summary": "Returns a substring of the string stored at a key.", + "since": "2.4.0", "group": "string", - "complexity": "O(N) where N is the number of keys to set.", + "complexity": "O(N) where N is the length of the returned string. The complexity is ultimately determined by the returned length, but because creating a substring from an existing string is very cheap, it can be considered O(1) for small strings.", "acl_categories": [ - "@write", + "@read", "@string", "@slow" ], - "arity": -4, + "arity": 4, "key_specs": [ { "begin_search": { @@ -12595,119 +14677,52 @@ } }, "find_keys": { - "type": "keynum", + "type": "range", "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 2 + "lastkey": 0, + "keystep": 1, + "limit": 0 } }, - "OW": true, - "update": true + "RO": true, + "access": true } ], "arguments": [ { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "data", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "value", - "type": "string", - "display_text": "value" - } - ] + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 }, { - "name": "condition", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "nx", - "type": "pure-token", - "display_text": "nx", - "token": "NX" - }, - { - "name": "xx", - "type": "pure-token", - "display_text": "xx", - "token": "XX" - } - ] + "name": "start", + "type": "integer", + "display_text": "start" }, { - "name": "expiration", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "seconds", - "type": "integer", - "display_text": "seconds", - "token": "EX" - }, - { - "name": "milliseconds", - "type": "integer", - "display_text": "milliseconds", - "token": "PX" - }, - { - "name": "unix-time-seconds", - "type": "unix-time", - "display_text": "unix-time-seconds", - "token": "EXAT" - }, - { - "name": "unix-time-milliseconds", - "type": "unix-time", - "display_text": "unix-time-milliseconds", - "token": "PXAT" - }, - { - "name": "keepttl", - "type": "pure-token", - "display_text": "keepttl", - "token": "KEEPTTL" - } - ] + "name": "end", + "type": "integer", + "display_text": "end" } ], "command_flags": [ - "write", - "denyoom", - "movablekeys" - ], - "hints": [ - "request_policy:multi_shard", - "response_policy:all_succeeded" + "readonly" ] }, - "MSETNX": { - "summary": "Atomically modifies the string values of one or more keys only when all keys don't exist.", - "since": "1.0.1", + "GETSET": { + "summary": "Returns the previous string value of a key after setting it to a new value.", + "since": "1.0.0", "group": "string", - "complexity": "O(N) where N is the number of keys to set.", + "complexity": "O(1)", + "deprecated_since": "6.2.0", + "replaced_by": "`SET` with the `!GET` argument", "acl_categories": [ "@write", "@string", - "@slow" + "@fast" ], - "arity": -3, + "arity": 3, "key_specs": [ { "begin_search": { @@ -12719,85 +14734,61 @@ "find_keys": { "type": "range", "spec": { - "lastkey": -1, - "keystep": 2, + "lastkey": 0, + "keystep": 1, "limit": 0 } }, - "OW": true, - "insert": true + "RW": true, + "access": true, + "update": true } ], "arguments": [ { - "name": "data", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "value", - "type": "string", - "display_text": "value" - } - ] + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "value", + "type": "string", + "display_text": "value" } ], "command_flags": [ "write", - "denyoom" - ] - }, - "MULTI": { - "summary": "Starts a transaction.", - "since": "1.2.0", - "group": "transactions", - "complexity": "O(1)", - "acl_categories": [ - "@fast", - "@transaction" + "denyoom", + "fast" ], - "arity": 1, - "command_flags": [ - "noscript", - "loading", - "stale", - "fast", - "allow_busy" + "doc_flags": [ + "deprecated" ] }, - "OBJECT": { - "summary": "A container for object introspection commands.", - "since": "2.2.3", - "group": "generic", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" + "HDEL": { + "summary": "Deletes one or more fields and their values from a hash. Deletes the hash if no fields remain.", + "since": "2.0.0", + "group": "hash", + "complexity": "O(N) where N is the number of fields to be removed.", + "history": [ + [ + "2.4.0", + "Accepts multiple `field` arguments." + ] ], - "arity": -2 - }, - "OBJECT ENCODING": { - "summary": "Returns the internal encoding of a Redis object.", - "since": "2.2.3", - "group": "generic", - "complexity": "O(1)", "acl_categories": [ - "@keyspace", - "@read", - "@slow" + "@write", + "@hash", + "@fast" ], - "arity": 3, + "arity": -3, "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 2 + "index": 1 } }, "find_keys": { @@ -12808,7 +14799,8 @@ "limit": 0 } }, - "RO": true + "RW": true, + "delete": true } ], "arguments": [ @@ -12817,129 +14809,92 @@ "type": "key", "display_text": "key", "key_spec_index": 0 + }, + { + "name": "field", + "type": "string", + "display_text": "field", + "multiple": true } ], "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output" + "write", + "fast" ] }, - "OBJECT FREQ": { - "summary": "Returns the logarithmic access frequency counter of a Redis object.", - "since": "4.0.0", - "group": "generic", + "HELLO": { + "summary": "Handshakes with the Redis server.", + "since": "6.0.0", + "group": "connection", "complexity": "O(1)", + "history": [ + [ + "6.2.0", + "`protover` made optional; when called without arguments the command reports the current connection's context." + ] + ], "acl_categories": [ - "@keyspace", - "@read", - "@slow" + "@fast", + "@connection" ], - "arity": 3, - "key_specs": [ + "arity": -1, + "arguments": [ { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 + "name": "arguments", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "protover", + "type": "integer", + "display_text": "protover" + }, + { + "name": "auth", + "type": "block", + "token": "AUTH", + "optional": true, + "arguments": [ + { + "name": "username", + "type": "string", + "display_text": "username" + }, + { + "name": "password", + "type": "string", + "display_text": "password" + } + ] + }, + { + "name": "clientname", + "type": "string", + "display_text": "clientname", + "token": "SETNAME", + "optional": true } - }, - "RO": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + ] } ], "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "OBJECT HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "6.2.0", - "group": "generic", - "complexity": "O(1)", - "acl_categories": [ - "@keyspace", - "@slow" - ], - "arity": 2, - "command_flags": [ + "noscript", "loading", - "stale" - ] - }, - "OBJECT IDLETIME": { - "summary": "Returns the time since the last access to a Redis object.", - "since": "2.2.3", - "group": "generic", - "complexity": "O(1)", - "acl_categories": [ - "@keyspace", - "@read", - "@slow" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output" + "stale", + "fast", + "no_auth", + "allow_busy" ] }, - "OBJECT REFCOUNT": { - "summary": "Returns the reference count of a value of a key.", - "since": "2.2.3", - "group": "generic", + "HEXISTS": { + "summary": "Determines whether a field exists in a hash.", + "since": "2.0.0", + "group": "hash", "complexity": "O(1)", "acl_categories": [ - "@keyspace", "@read", - "@slow" + "@hash", + "@fast" ], "arity": 3, "key_specs": [ @@ -12947,7 +14902,7 @@ "begin_search": { "type": "index", "spec": { - "index": 2 + "index": 1 } }, "find_keys": { @@ -12967,76 +14922,29 @@ "type": "key", "display_text": "key", "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output" - ] - }, - "PERSIST": { - "summary": "Removes the expiration time of a key.", - "since": "2.2.0", - "group": "generic", - "complexity": "O(1)", - "acl_categories": [ - "@keyspace", - "@write", - "@fast" - ], - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ + }, { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "field", + "type": "string", + "display_text": "field" } ], "command_flags": [ - "write", + "readonly", "fast" ] }, - "PEXPIRE": { - "summary": "Sets the expiration time of a key in milliseconds.", - "since": "2.6.0", - "group": "generic", - "complexity": "O(1)", - "history": [ - [ - "7.0.0", - "Added options: `NX`, `XX`, `GT` and `LT`." - ] - ], + "HEXPIRE": { + "summary": "Set expiry for hash field using relative time to expire (seconds)", + "since": "7.4.0", + "group": "hash", + "complexity": "O(N) where N is the number of specified fields", "acl_categories": [ - "@keyspace", "@write", + "@hash", "@fast" ], - "arity": -3, + "arity": -6, "key_specs": [ { "begin_search": { @@ -13065,14 +14973,13 @@ "key_spec_index": 0 }, { - "name": "milliseconds", + "name": "seconds", "type": "integer", - "display_text": "milliseconds" + "display_text": "seconds" }, { "name": "condition", "type": "oneof", - "since": "7.0.0", "optional": true, "arguments": [ { @@ -13100,6 +15007,24 @@ "token": "LT" } ] + }, + { + "name": "fields", + "type": "block", + "token": "FIELDS", + "arguments": [ + { + "name": "numfields", + "type": "integer", + "display_text": "numfields" + }, + { + "name": "field", + "type": "string", + "display_text": "field", + "multiple": true + } + ] } ], "command_flags": [ @@ -13107,23 +15032,17 @@ "fast" ] }, - "PEXPIREAT": { - "summary": "Sets the expiration time of a key to a Unix milliseconds timestamp.", - "since": "2.6.0", - "group": "generic", - "complexity": "O(1)", - "history": [ - [ - "7.0.0", - "Added options: `NX`, `XX`, `GT` and `LT`." - ] - ], + "HEXPIREAT": { + "summary": "Set expiry for hash field using an absolute Unix timestamp (seconds)", + "since": "7.4.0", + "group": "hash", + "complexity": "O(N) where N is the number of specified fields", "acl_categories": [ - "@keyspace", "@write", + "@hash", "@fast" ], - "arity": -3, + "arity": -6, "key_specs": [ { "begin_search": { @@ -13152,14 +15071,13 @@ "key_spec_index": 0 }, { - "name": "unix-time-milliseconds", + "name": "unix-time-seconds", "type": "unix-time", - "display_text": "unix-time-milliseconds" + "display_text": "unix-time-seconds" }, { "name": "condition", "type": "oneof", - "since": "7.0.0", "optional": true, "arguments": [ { @@ -13187,24 +15105,42 @@ "token": "LT" } ] - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "PEXPIRETIME": { - "summary": "Returns the expiration time of a key as a Unix milliseconds timestamp.", - "since": "7.0.0", - "group": "generic", - "complexity": "O(1)", + }, + { + "name": "fields", + "type": "block", + "token": "FIELDS", + "arguments": [ + { + "name": "numfields", + "type": "integer", + "display_text": "numfields" + }, + { + "name": "field", + "type": "string", + "display_text": "field", + "multiple": true + } + ] + } + ], + "command_flags": [ + "write", + "fast" + ] + }, + "HEXPIRETIME": { + "summary": "Returns the expiration time of a hash field as a Unix timestamp, in seconds.", + "since": "7.4.0", + "group": "hash", + "complexity": "O(N) where N is the number of specified fields", "acl_categories": [ - "@keyspace", "@read", + "@hash", "@fast" ], - "arity": 2, + "arity": -5, "key_specs": [ { "begin_search": { @@ -13231,6 +15167,24 @@ "type": "key", "display_text": "key", "key_spec_index": 0 + }, + { + "name": "fields", + "type": "block", + "token": "FIELDS", + "arguments": [ + { + "name": "numfields", + "type": "integer", + "display_text": "numfields" + }, + { + "name": "field", + "type": "string", + "display_text": "field", + "multiple": true + } + ] } ], "command_flags": [ @@ -13238,17 +15192,17 @@ "fast" ] }, - "PFADD": { - "summary": "Adds elements to a HyperLogLog key. Creates the key if it doesn't exist.", - "since": "2.8.9", - "group": "hyperloglog", - "complexity": "O(1) to add every element.", + "HGET": { + "summary": "Returns the value of a field in a hash.", + "since": "2.0.0", + "group": "hash", + "complexity": "O(1)", "acl_categories": [ - "@write", - "@hyperloglog", + "@read", + "@hash", "@fast" ], - "arity": -2, + "arity": 3, "key_specs": [ { "begin_search": { @@ -13265,8 +15219,8 @@ "limit": 0 } }, - "RW": true, - "insert": true + "RO": true, + "access": true } ], "arguments": [ @@ -13277,33 +15231,29 @@ "key_spec_index": 0 }, { - "name": "element", + "name": "field", "type": "string", - "display_text": "element", - "optional": true, - "multiple": true + "display_text": "field" } ], "command_flags": [ - "write", - "denyoom", + "readonly", "fast" ] }, - "PFCOUNT": { - "summary": "Returns the approximated cardinality of the set(s) observed by the HyperLogLog key(s).", - "since": "2.8.9", - "group": "hyperloglog", - "complexity": "O(1) with a very small average constant time when called with a single key. O(N) with N being the number of keys, and much bigger constant times, when called with multiple keys.", + "HGETALL": { + "summary": "Returns all fields and values in a hash.", + "since": "2.0.0", + "group": "hash", + "complexity": "O(N) where N is the size of the hash.", "acl_categories": [ "@read", - "@hyperloglog", + "@hash", "@slow" ], - "arity": -2, + "arity": 2, "key_specs": [ { - "notes": "RW because it may change the internal representation of the key, and propagate to replicas", "begin_search": { "type": "index", "spec": { @@ -13313,12 +15263,12 @@ "find_keys": { "type": "range", "spec": { - "lastkey": -1, + "lastkey": 0, "keystep": 1, "limit": 0 } }, - "RW": true, + "RO": true, "access": true } ], @@ -13327,33 +15277,33 @@ "name": "key", "type": "key", "display_text": "key", - "key_spec_index": 0, - "multiple": true + "key_spec_index": 0 } ], "command_flags": [ "readonly" + ], + "hints": [ + "nondeterministic_output_order" ] }, - "PFDEBUG": { - "summary": "Internal commands for debugging HyperLogLog values.", - "since": "2.8.9", - "group": "hyperloglog", - "complexity": "N/A", + "HGETDEL": { + "summary": "Returns the value of a field and deletes it from the hash.", + "since": "8.0.0", + "group": "hash", + "complexity": "O(N) where N is the number of specified fields", "acl_categories": [ "@write", - "@hyperloglog", - "@admin", - "@slow", - "@dangerous" + "@hash", + "@fast" ], - "arity": 3, + "arity": -5, "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 2 + "index": 1 } }, "find_keys": { @@ -13365,44 +15315,55 @@ } }, "RW": true, - "access": true + "access": true, + "delete": true } ], "arguments": [ - { - "name": "subcommand", - "type": "string", - "display_text": "subcommand" - }, { "name": "key", "type": "key", "display_text": "key", "key_spec_index": 0 + }, + { + "name": "fields", + "type": "block", + "token": "FIELDS", + "arguments": [ + { + "name": "numfields", + "type": "integer", + "display_text": "numfields" + }, + { + "name": "field", + "type": "string", + "display_text": "field", + "multiple": true + } + ] } ], "command_flags": [ "write", - "denyoom", - "admin" - ], - "doc_flags": [ - "syscmd" + "fast" ] }, - "PFMERGE": { - "summary": "Merges one or more HyperLogLog values into a single key.", - "since": "2.8.9", - "group": "hyperloglog", - "complexity": "O(N) to merge N HyperLogLogs, but with high constant times.", + "HGETEX": { + "summary": "Get the value of one or more fields of a given hash key, and optionally set their expiration.", + "since": "8.0.0", + "group": "hash", + "complexity": "O(N) where N is the number of specified fields", "acl_categories": [ "@write", - "@hyperloglog", - "@slow" + "@hash", + "@fast" ], - "arity": -2, + "arity": -5, "key_specs": [ { + "notes": "RW and UPDATE because it changes the TTL", "begin_search": { "type": "index", "spec": { @@ -13419,112 +15380,170 @@ }, "RW": true, "access": true, - "insert": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true + "update": true } ], "arguments": [ { - "name": "destkey", + "name": "key", "type": "key", - "display_text": "destkey", + "display_text": "key", "key_spec_index": 0 }, { - "name": "sourcekey", - "type": "key", - "display_text": "sourcekey", - "key_spec_index": 1, + "name": "expiration", + "type": "oneof", "optional": true, - "multiple": true - } - ], - "command_flags": [ - "write", - "denyoom" - ] - }, - "PFSELFTEST": { - "summary": "An internal command for testing HyperLogLog values.", - "since": "2.8.9", - "group": "hyperloglog", - "complexity": "N/A", - "acl_categories": [ - "@hyperloglog", - "@admin", - "@slow", - "@dangerous" - ], - "arity": 1, - "command_flags": [ - "admin" - ], - "doc_flags": [ - "syscmd" - ] - }, - "PING": { - "summary": "Returns the server's liveliness response.", - "since": "1.0.0", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@fast", - "@connection" - ], - "arity": -1, - "arguments": [ - { - "name": "message", - "type": "string", - "display_text": "message", - "optional": true - } - ], - "command_flags": [ - "fast" - ], - "hints": [ - "request_policy:all_shards", - "response_policy:all_succeeded" + "arguments": [ + { + "name": "seconds", + "type": "integer", + "display_text": "seconds", + "token": "EX" + }, + { + "name": "milliseconds", + "type": "integer", + "display_text": "milliseconds", + "token": "PX" + }, + { + "name": "unix-time-seconds", + "type": "unix-time", + "display_text": "unix-time-seconds", + "token": "EXAT" + }, + { + "name": "unix-time-milliseconds", + "type": "unix-time", + "display_text": "unix-time-milliseconds", + "token": "PXAT" + }, + { + "name": "persist", + "type": "pure-token", + "display_text": "persist", + "token": "PERSIST" + } + ] + }, + { + "name": "fields", + "type": "block", + "token": "FIELDS", + "arguments": [ + { + "name": "numfields", + "type": "integer", + "display_text": "numfields" + }, + { + "name": "field", + "type": "string", + "display_text": "field", + "multiple": true + } + ] + } + ], + "command_flags": [ + "write", + "fast" ] }, - "PSETEX": { - "summary": "Sets both string value and expiration time in milliseconds of a key. The key is created if it doesn't exist.", - "since": "2.6.0", - "group": "string", - "complexity": "O(1)", - "deprecated_since": "2.6.12", - "replaced_by": "`SET` with the `PX` argument", + "HIMPORT": { + "summary": "A container for session-based hash import commands using fieldsets.", + "since": "8.10.0", + "group": "hash", + "complexity": "Depends on subcommand.", + "acl_categories": [ + "@hash", + "@slow" + ], + "arity": -2 + }, + "HIMPORT DISCARD": { + "summary": "Removes a single session-local fieldset by name.", + "since": "8.10.0", + "group": "hash", + "complexity": "O(N) where N is the number of session-local fieldsets.", + "acl_categories": [ + "@hash", + "@slow" + ], + "arity": 3, + "arguments": [ + { + "name": "fieldset-name", + "type": "string", + "display_text": "fieldset-name" + } + ], + "hints": [ + "request_policy:all_shards" + ] + }, + "HIMPORT DISCARDALL": { + "summary": "Removes all session-local fieldsets for the connection.", + "since": "8.10.0", + "group": "hash", + "complexity": "O(N) where N is the number of session-local fieldsets.", + "acl_categories": [ + "@hash", + "@slow" + ], + "arity": 2, + "hints": [ + "request_policy:all_shards" + ] + }, + "HIMPORT PREPARE": { + "summary": "Defines a session-local fieldset that maps a name to a sorted set of field names.", + "since": "8.10.0", + "group": "hash", + "complexity": "O(N*log(N)) where N is the number of fields.", + "acl_categories": [ + "@hash", + "@slow" + ], + "arity": -4, + "arguments": [ + { + "name": "fieldset-name", + "type": "string", + "display_text": "fieldset-name" + }, + { + "name": "field", + "type": "string", + "display_text": "field", + "multiple": true + } + ], + "command_flags": [ + "denyoom" + ], + "hints": [ + "request_policy:all_shards" + ] + }, + "HIMPORT SET": { + "summary": "Creates a fieldset-based hash from values supplied in the order matching a previously prepared fieldset.", + "since": "8.10.0", + "group": "hash", + "complexity": "O(N) where N is the number of fields in the fieldset.", "acl_categories": [ "@write", - "@string", + "@hash", "@slow" ], - "arity": 4, + "arity": -5, "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 1 + "index": 2 } }, "find_keys": { @@ -13547,96 +15566,89 @@ "key_spec_index": 0 }, { - "name": "milliseconds", - "type": "integer", - "display_text": "milliseconds" + "name": "fieldset-name", + "type": "string", + "display_text": "fieldset-name" }, { "name": "value", "type": "string", - "display_text": "value" + "display_text": "value", + "multiple": true } ], "command_flags": [ "write", "denyoom" - ], - "doc_flags": [ - "deprecated" ] }, - "PSUBSCRIBE": { - "summary": "Listens for messages published to channels that match one or more patterns.", + "HINCRBY": { + "summary": "Increments the integer value of a field in a hash by a number. Uses 0 as initial value if the field doesn't exist.", "since": "2.0.0", - "group": "pubsub", - "complexity": "O(N) where N is the number of patterns to subscribe to.", + "group": "hash", + "complexity": "O(1)", "acl_categories": [ - "@pubsub", - "@slow" + "@write", + "@hash", + "@fast" ], - "arity": -2, - "arguments": [ + "arity": 4, + "key_specs": [ { - "name": "pattern", - "type": "pattern", - "display_text": "pattern", - "multiple": true + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "update": true } ], - "command_flags": [ - "denyoom", - "pubsub", - "noscript", - "loading", - "stale" - ] - }, - "PSYNC": { - "summary": "An internal command used in replication.", - "since": "2.8.0", - "group": "server", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -3, "arguments": [ { - "name": "replicationid", + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "field", "type": "string", - "display_text": "replicationid" + "display_text": "field" }, { - "name": "offset", + "name": "increment", "type": "integer", - "display_text": "offset" + "display_text": "increment" } ], "command_flags": [ - "admin", - "noscript", - "no_async_loading", - "no_multi" + "write", + "denyoom", + "fast" ] }, - "PTTL": { - "summary": "Returns the expiration time in milliseconds of a key.", + "HINCRBYFLOAT": { + "summary": "Increments the floating point value of a field by a number. Uses 0 as initial value if the field doesn't exist.", "since": "2.6.0", - "group": "generic", + "group": "hash", "complexity": "O(1)", - "history": [ - [ - "2.8.0", - "Added the -2 reply." - ] - ], "acl_categories": [ - "@keyspace", - "@read", + "@write", + "@hash", "@fast" ], - "arity": 2, + "arity": 4, "key_specs": [ { "begin_search": { @@ -13653,8 +15665,9 @@ "limit": 0 } }, - "RO": true, - "access": true + "RW": true, + "access": true, + "update": true } ], "arguments": [ @@ -13663,297 +15676,177 @@ "type": "key", "display_text": "key", "key_spec_index": 0 + }, + { + "name": "field", + "type": "string", + "display_text": "field" + }, + { + "name": "increment", + "type": "double", + "display_text": "increment" } ], "command_flags": [ - "readonly", + "write", + "denyoom", "fast" - ], - "hints": [ - "nondeterministic_output" ] }, - "PUBLISH": { - "summary": "Posts a message to a channel.", - "since": "2.0.0", - "group": "pubsub", - "complexity": "O(N+M) where N is the number of clients subscribed to the receiving channel and M is the total number of subscribed patterns (by any client).", + "HKEYS": { + "summary": "Returns all fields in a hash.", + "since": "2.0.0", + "group": "hash", + "complexity": "O(N) where N is the size of the hash.", "acl_categories": [ - "@pubsub", - "@fast" + "@read", + "@hash", + "@slow" ], - "arity": 3, - "arguments": [ - { - "name": "channel", - "type": "string", - "display_text": "channel" - }, + "arity": 2, + "key_specs": [ { - "name": "message", - "type": "string", - "display_text": "message" + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true } ], - "command_flags": [ - "pubsub", - "loading", - "stale", - "fast" - ] - }, - "PUBSUB": { - "summary": "A container for Pub/Sub commands.", - "since": "2.8.0", - "group": "pubsub", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" - ], - "arity": -2 - }, - "PUBSUB CHANNELS": { - "summary": "Returns the active channels.", - "since": "2.8.0", - "group": "pubsub", - "complexity": "O(N) where N is the number of active channels, and assuming constant time pattern matching (relatively short channels and patterns)", - "acl_categories": [ - "@pubsub", - "@slow" - ], - "arity": -2, "arguments": [ { - "name": "pattern", - "type": "pattern", - "display_text": "pattern", - "optional": true + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 } ], "command_flags": [ - "pubsub", - "loading", - "stale" - ] - }, - "PUBSUB HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "6.2.0", - "group": "pubsub", - "complexity": "O(1)", - "acl_categories": [ - "@slow" + "readonly" ], - "arity": 2, - "command_flags": [ - "loading", - "stale" + "hints": [ + "nondeterministic_output_order" ] }, - "PUBSUB NUMPAT": { - "summary": "Returns a count of unique pattern subscriptions.", - "since": "2.8.0", - "group": "pubsub", + "HLEN": { + "summary": "Returns the number of fields in a hash.", + "since": "2.0.0", + "group": "hash", "complexity": "O(1)", "acl_categories": [ - "@pubsub", - "@slow" + "@read", + "@hash", + "@fast" ], "arity": 2, - "command_flags": [ - "pubsub", - "loading", - "stale" - ] - }, - "PUBSUB NUMSUB": { - "summary": "Returns a count of subscribers to channels.", - "since": "2.8.0", - "group": "pubsub", - "complexity": "O(N) for the NUMSUB subcommand, where N is the number of requested channels", - "acl_categories": [ - "@pubsub", - "@slow" + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } ], - "arity": -2, "arguments": [ { - "name": "channel", - "type": "string", - "display_text": "channel", - "optional": true, - "multiple": true + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 } ], "command_flags": [ - "pubsub", - "loading", - "stale" + "readonly", + "fast" ] }, - "PUBSUB SHARDCHANNELS": { - "summary": "Returns the active shard channels.", - "since": "7.0.0", - "group": "pubsub", - "complexity": "O(N) where N is the number of active shard channels, and assuming constant time pattern matching (relatively short shard channels).", + "HMGET": { + "summary": "Returns the values of all fields in a hash.", + "since": "2.0.0", + "group": "hash", + "complexity": "O(N) where N is the number of fields being requested.", "acl_categories": [ - "@pubsub", - "@slow" + "@read", + "@hash", + "@fast" ], - "arity": -2, - "arguments": [ + "arity": -3, + "key_specs": [ { - "name": "pattern", - "type": "pattern", - "display_text": "pattern", - "optional": true + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true } ], - "command_flags": [ - "pubsub", - "loading", - "stale" - ] - }, - "PUBSUB SHARDNUMSUB": { - "summary": "Returns the count of subscribers of shard channels.", - "since": "7.0.0", - "group": "pubsub", - "complexity": "O(N) for the SHARDNUMSUB subcommand, where N is the number of requested shard channels", - "acl_categories": [ - "@pubsub", - "@slow" - ], - "arity": -2, "arguments": [ { - "name": "shardchannel", + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "field", "type": "string", - "display_text": "shardchannel", - "optional": true, + "display_text": "field", "multiple": true } ], "command_flags": [ - "pubsub", - "loading", - "stale" + "readonly", + "fast" ] }, - "PUNSUBSCRIBE": { - "summary": "Stops listening to messages published to channels that match one or more patterns.", + "HMSET": { + "summary": "Sets the values of multiple fields.", "since": "2.0.0", - "group": "pubsub", - "complexity": "O(N) where N is the number of patterns to unsubscribe.", + "group": "hash", + "complexity": "O(N) where N is the number of fields being set.", + "deprecated_since": "4.0.0", + "replaced_by": "`HSET` with multiple field-value pairs", "acl_categories": [ - "@pubsub", - "@slow" + "@write", + "@hash", + "@fast" ], - "arity": -1, - "arguments": [ - { - "name": "pattern", - "type": "pattern", - "display_text": "pattern", - "optional": true, - "multiple": true - } - ], - "command_flags": [ - "pubsub", - "noscript", - "loading", - "stale" - ] - }, - "QUIT": { - "summary": "Closes the connection.", - "since": "1.0.0", - "group": "connection", - "complexity": "O(1)", - "deprecated_since": "7.2.0", - "replaced_by": "just closing the connection", - "acl_categories": [ - "@fast", - "@connection" - ], - "arity": -1, - "command_flags": [ - "noscript", - "loading", - "stale", - "fast", - "no_auth", - "allow_busy" - ], - "doc_flags": [ - "deprecated" - ] - }, - "RANDOMKEY": { - "summary": "Returns a random key name from the database.", - "since": "1.0.0", - "group": "generic", - "complexity": "O(1)", - "acl_categories": [ - "@keyspace", - "@read", - "@slow" - ], - "arity": 1, - "command_flags": [ - "readonly" - ], - "hints": [ - "request_policy:all_shards", - "response_policy:special", - "nondeterministic_output" - ] - }, - "READONLY": { - "summary": "Enables read-only queries for a connection to a Redis Cluster replica node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", - "acl_categories": [ - "@fast", - "@connection" - ], - "arity": 1, - "command_flags": [ - "loading", - "stale", - "fast" - ] - }, - "READWRITE": { - "summary": "Enables read-write queries for a connection to a Reids Cluster replica node.", - "since": "3.0.0", - "group": "cluster", - "complexity": "O(1)", - "acl_categories": [ - "@fast", - "@connection" - ], - "arity": 1, - "command_flags": [ - "loading", - "stale", - "fast" - ] - }, - "RENAME": { - "summary": "Renames a key and overwrites the destination.", - "since": "1.0.0", - "group": "generic", - "complexity": "O(1)", - "acl_categories": [ - "@keyspace", - "@write", - "@slow" - ], - "arity": 3, - "key_specs": [ + "arity": -4, + "key_specs": [ { "begin_search": { "type": "index", @@ -13970,25 +15863,6 @@ } }, "RW": true, - "access": true, - "delete": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, "update": true } ], @@ -14000,116 +15874,80 @@ "key_spec_index": 0 }, { - "name": "newkey", - "type": "key", - "display_text": "newkey", - "key_spec_index": 1 - } - ], - "command_flags": [ - "write" - ] - }, - "RENAMENX": { - "summary": "Renames a key only when the target key name doesn't exist.", - "since": "1.0.0", - "group": "generic", - "complexity": "O(1)", - "history": [ - [ - "3.2.0", - "The command no longer returns an error when source and destination names are the same." - ] - ], - "acl_categories": [ - "@keyspace", - "@write", - "@fast" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "delete": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 + "name": "data", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "field", + "type": "string", + "display_text": "field" + }, + { + "name": "value", + "type": "string", + "display_text": "value" } - }, - "OW": true, - "insert": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "newkey", - "type": "key", - "display_text": "newkey", - "key_spec_index": 1 + ] } ], "command_flags": [ "write", + "denyoom", "fast" + ], + "doc_flags": [ + "deprecated" ] }, - "REPLCONF": { - "summary": "An internal command for configuring the replication stream.", - "since": "3.0.0", + "HOTKEYS": { + "summary": "A container for hotkeys tracking commands.", + "since": "8.6.0", "group": "server", - "complexity": "O(1)", + "complexity": "Depends on subcommand.", + "acl_categories": [ + "@slow" + ], + "arity": -2 + }, + "HOTKEYS GET": { + "summary": "Returns lists of top K hotkeys depending on metrics chosen in HOTKEYS START command.", + "since": "8.6.0", + "group": "server", + "complexity": "O(K) where K is the number of hotkeys returned.", "acl_categories": [ "@admin", "@slow", "@dangerous" ], - "arity": -1, + "arity": 2, "command_flags": [ "admin", - "noscript", - "loading", - "stale", - "allow_busy" + "noscript" ], - "doc_flags": [ - "syscmd" + "hints": [ + "nondeterministic_output", + "request_policy:special", + "response_policy:special" ] }, - "REPLICAOF": { - "summary": "Configures a server as replica of another, or promotes it to a master.", - "since": "5.0.0", + "HOTKEYS HELP": { + "summary": "Return helpful text about HOTKEYS command parameters.", + "since": "8.6.1", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@slow" + ], + "arity": 2, + "command_flags": [ + "loading", + "stale" + ] + }, + "HOTKEYS RESET": { + "summary": "Release the resources used for hotkey tracking.", + "since": "8.6.0", "group": "server", "complexity": "O(1)", "acl_categories": [ @@ -14117,202 +15955,132 @@ "@slow", "@dangerous" ], - "arity": 3, - "arguments": [ - { - "name": "args", - "type": "oneof", - "arguments": [ - { - "name": "host-port", - "type": "block", - "arguments": [ - { - "name": "host", - "type": "string", - "display_text": "host" - }, - { - "name": "port", - "type": "integer", - "display_text": "port" - } - ] - }, - { - "name": "no-one", - "type": "block", - "arguments": [ - { - "name": "no", - "type": "pure-token", - "display_text": "no", - "token": "NO" - }, - { - "name": "one", - "type": "pure-token", - "display_text": "one", - "token": "ONE" - } - ] - } - ] - } - ], + "arity": 2, "command_flags": [ "admin", - "noscript", - "stale", - "no_async_loading" - ] - }, - "RESET": { - "summary": "Resets the connection.", - "since": "6.2.0", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@fast", - "@connection" + "noscript" ], - "arity": 1, - "command_flags": [ - "noscript", - "loading", - "stale", - "fast", - "no_auth", - "allow_busy" + "hints": [ + "request_policy:special" ] }, - "RESTORE": { - "summary": "Creates a key from the serialized representation of a value.", - "since": "2.6.0", - "group": "generic", - "complexity": "O(1) to create the new key and additional O(N*M) to reconstruct the serialized value, where N is the number of Redis objects composing the value and M their average size. For small string values the time complexity is thus O(1)+O(1*M) where M is small, so simply O(1). However for sorted set values the complexity is O(N*M*log(N)) because inserting values into sorted sets is O(log(N)).", - "history": [ - [ - "3.0.0", - "Added the `REPLACE` modifier." - ], - [ - "5.0.0", - "Added the `ABSTTL` modifier." - ], - [ - "5.0.0", - "Added the `IDLETIME` and `FREQ` options." - ] - ], + "HOTKEYS START": { + "summary": "Starts hotkeys tracking.", + "since": "8.6.0", + "group": "server", + "complexity": "O(1)", "acl_categories": [ - "@keyspace", - "@write", + "@admin", "@slow", "@dangerous" ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "OW": true, - "update": true - } - ], + "arity": -2, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "metrics", + "type": "block", + "token": "METRICS", + "arguments": [ + { + "name": "count", + "type": "integer", + "display_text": "count" + }, + { + "name": "cpu", + "type": "pure-token", + "display_text": "cpu", + "token": "CPU", + "optional": true + }, + { + "name": "net", + "type": "pure-token", + "display_text": "net", + "token": "NET", + "optional": true + } + ] }, { - "name": "ttl", + "name": "k", "type": "integer", - "display_text": "ttl" - }, - { - "name": "serialized-value", - "type": "string", - "display_text": "serialized-value" - }, - { - "name": "replace", - "type": "pure-token", - "display_text": "replace", - "token": "REPLACE", - "since": "3.0.0", - "optional": true - }, - { - "name": "absttl", - "type": "pure-token", - "display_text": "absttl", - "token": "ABSTTL", - "since": "5.0.0", + "display_text": "k", + "token": "COUNT", "optional": true }, { "name": "seconds", "type": "integer", "display_text": "seconds", - "token": "IDLETIME", - "since": "5.0.0", + "token": "DURATION", "optional": true }, { - "name": "frequency", + "name": "ratio", "type": "integer", - "display_text": "frequency", - "token": "FREQ", - "since": "5.0.0", + "display_text": "ratio", + "token": "SAMPLE", "optional": true + }, + { + "name": "slots", + "type": "block", + "token": "SLOTS", + "optional": true, + "arguments": [ + { + "name": "count", + "type": "integer", + "display_text": "count" + }, + { + "name": "slot", + "type": "integer", + "display_text": "slot", + "multiple": true + } + ] } ], "command_flags": [ - "write", - "denyoom" + "admin", + "noscript" + ], + "hints": [ + "request_policy:special" ] }, - "RESTORE-ASKING": { - "summary": "An internal command for migrating keys in a cluster.", - "since": "3.0.0", + "HOTKEYS STOP": { + "summary": "Stops hotkeys tracking.", + "since": "8.6.0", "group": "server", - "complexity": "O(1) to create the new key and additional O(N*M) to reconstruct the serialized value, where N is the number of Redis objects composing the value and M their average size. For small string values the time complexity is thus O(1)+O(1*M) where M is small, so simply O(1). However for sorted set values the complexity is O(N*M*log(N)) because inserting values into sorted sets is O(log(N)).", - "history": [ - [ - "3.0.0", - "Added the `REPLACE` modifier." - ], - [ - "5.0.0", - "Added the `ABSTTL` modifier." - ], - [ - "5.0.0", - "Added the `IDLETIME` and `FREQ` options." - ] - ], + "complexity": "O(1)", "acl_categories": [ - "@keyspace", - "@write", + "@admin", "@slow", "@dangerous" ], - "arity": -4, + "arity": 2, + "command_flags": [ + "admin", + "noscript" + ], + "hints": [ + "request_policy:special" + ] + }, + "HPERSIST": { + "summary": "Removes the expiration time for each specified field", + "since": "7.4.0", + "group": "hash", + "complexity": "O(N) where N is the number of specified fields", + "acl_categories": [ + "@write", + "@hash", + "@fast" + ], + "arity": -5, "key_specs": [ { "begin_search": { @@ -14329,7 +16097,7 @@ "limit": 0 } }, - "OW": true, + "RW": true, "update": true } ], @@ -14341,92 +16109,40 @@ "key_spec_index": 0 }, { - "name": "ttl", - "type": "integer", - "display_text": "ttl" - }, - { - "name": "serialized-value", - "type": "string", - "display_text": "serialized-value" - }, - { - "name": "replace", - "type": "pure-token", - "display_text": "replace", - "token": "REPLACE", - "since": "3.0.0", - "optional": true - }, - { - "name": "absttl", - "type": "pure-token", - "display_text": "absttl", - "token": "ABSTTL", - "since": "5.0.0", - "optional": true - }, - { - "name": "seconds", - "type": "integer", - "display_text": "seconds", - "token": "IDLETIME", - "since": "5.0.0", - "optional": true - }, - { - "name": "frequency", - "type": "integer", - "display_text": "frequency", - "token": "FREQ", - "since": "5.0.0", - "optional": true + "name": "fields", + "type": "block", + "token": "FIELDS", + "arguments": [ + { + "name": "numfields", + "type": "integer", + "display_text": "numfields" + }, + { + "name": "field", + "type": "string", + "display_text": "field", + "multiple": true + } + ] } ], "command_flags": [ "write", - "denyoom", - "asking" - ], - "doc_flags": [ - "syscmd" - ] - }, - "ROLE": { - "summary": "Returns the replication role.", - "since": "2.8.12", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@fast", - "@dangerous" - ], - "arity": 1, - "command_flags": [ - "noscript", - "loading", - "stale", "fast" ] }, - "RPOP": { - "summary": "Returns and removes the last elements of a list. Deletes the list if the last element was popped.", - "since": "1.0.0", - "group": "list", - "complexity": "O(N) where N is the number of elements returned", - "history": [ - [ - "6.2.0", - "Added the `count` argument." - ] - ], + "HPEXPIRE": { + "summary": "Set expiry for hash field using relative time to expire (milliseconds)", + "since": "7.4.0", + "group": "hash", + "complexity": "O(N) where N is the number of specified fields", "acl_categories": [ "@write", - "@list", + "@hash", "@fast" ], - "arity": -2, + "arity": -6, "key_specs": [ { "begin_search": { @@ -14444,8 +16160,7 @@ } }, "RW": true, - "access": true, - "delete": true + "update": true } ], "arguments": [ @@ -14456,109 +16171,76 @@ "key_spec_index": 0 }, { - "name": "count", + "name": "milliseconds", "type": "integer", - "display_text": "count", - "since": "6.2.0", - "optional": true - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "RPOPLPUSH": { - "summary": "Returns the last element of a list after removing and pushing it to another list. Deletes the list if the last element was popped.", - "since": "1.2.0", - "group": "list", - "complexity": "O(1)", - "deprecated_since": "6.2.0", - "replaced_by": "`LMOVE` with the `RIGHT` and `LEFT` arguments", - "acl_categories": [ - "@write", - "@list", - "@slow" - ], - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "delete": true + "display_text": "milliseconds" }, { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 + "name": "condition", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "nx", + "type": "pure-token", + "display_text": "nx", + "token": "NX" + }, + { + "name": "xx", + "type": "pure-token", + "display_text": "xx", + "token": "XX" + }, + { + "name": "gt", + "type": "pure-token", + "display_text": "gt", + "token": "GT" + }, + { + "name": "lt", + "type": "pure-token", + "display_text": "lt", + "token": "LT" } - }, - "RW": true, - "insert": true - } - ], - "arguments": [ - { - "name": "source", - "type": "key", - "display_text": "source", - "key_spec_index": 0 + ] }, { - "name": "destination", - "type": "key", - "display_text": "destination", - "key_spec_index": 1 + "name": "fields", + "type": "block", + "token": "FIELDS", + "arguments": [ + { + "name": "numfields", + "type": "integer", + "display_text": "numfields" + }, + { + "name": "field", + "type": "string", + "display_text": "field", + "multiple": true + } + ] } ], "command_flags": [ "write", - "denyoom" - ], - "doc_flags": [ - "deprecated" + "fast" ] }, - "RPUSH": { - "summary": "Appends one or more elements to a list. Creates the key if it doesn't exist.", - "since": "1.0.0", - "group": "list", - "complexity": "O(1) for each element added, so O(N) to add N elements when the command is called with multiple arguments.", - "history": [ - [ - "2.4.0", - "Accepts multiple `element` arguments." - ] - ], + "HPEXPIREAT": { + "summary": "Set expiry for hash field using an absolute Unix timestamp (milliseconds)", + "since": "7.4.0", + "group": "hash", + "complexity": "O(N) where N is the number of specified fields", "acl_categories": [ "@write", - "@list", + "@hash", "@fast" ], - "arity": -3, + "arity": -6, "key_specs": [ { "begin_search": { @@ -14576,7 +16258,7 @@ } }, "RW": true, - "insert": true + "update": true } ], "arguments": [ @@ -14587,35 +16269,76 @@ "key_spec_index": 0 }, { - "name": "element", - "type": "string", - "display_text": "element", - "multiple": true - } - ], - "command_flags": [ - "write", - "denyoom", - "fast" - ] - }, - "RPUSHX": { - "summary": "Appends an element to a list only when the list exists.", - "since": "2.2.0", - "group": "list", - "complexity": "O(1) for each element added, so O(N) to add N elements when the command is called with multiple arguments.", - "history": [ - [ - "4.0.0", - "Accepts multiple `element` arguments." - ] + "name": "unix-time-milliseconds", + "type": "unix-time", + "display_text": "unix-time-milliseconds" + }, + { + "name": "condition", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "nx", + "type": "pure-token", + "display_text": "nx", + "token": "NX" + }, + { + "name": "xx", + "type": "pure-token", + "display_text": "xx", + "token": "XX" + }, + { + "name": "gt", + "type": "pure-token", + "display_text": "gt", + "token": "GT" + }, + { + "name": "lt", + "type": "pure-token", + "display_text": "lt", + "token": "LT" + } + ] + }, + { + "name": "fields", + "type": "block", + "token": "FIELDS", + "arguments": [ + { + "name": "numfields", + "type": "integer", + "display_text": "numfields" + }, + { + "name": "field", + "type": "string", + "display_text": "field", + "multiple": true + } + ] + } ], + "command_flags": [ + "write", + "fast" + ] + }, + "HPEXPIRETIME": { + "summary": "Returns the expiration time of a hash field as a Unix timestamp, in msec.", + "since": "7.4.0", + "group": "hash", + "complexity": "O(N) where N is the number of specified fields", "acl_categories": [ - "@write", - "@list", + "@read", + "@hash", "@fast" ], - "arity": -3, + "arity": -5, "key_specs": [ { "begin_search": { @@ -14632,8 +16355,8 @@ "limit": 0 } }, - "RW": true, - "insert": true + "RO": true, + "access": true } ], "arguments": [ @@ -14644,35 +16367,40 @@ "key_spec_index": 0 }, { - "name": "element", - "type": "string", - "display_text": "element", - "multiple": true + "name": "fields", + "type": "block", + "token": "FIELDS", + "arguments": [ + { + "name": "numfields", + "type": "integer", + "display_text": "numfields" + }, + { + "name": "field", + "type": "string", + "display_text": "field", + "multiple": true + } + ] } ], "command_flags": [ - "write", - "denyoom", + "readonly", "fast" ] }, - "SADD": { - "summary": "Adds one or more members to a set. Creates the key if it doesn't exist.", - "since": "1.0.0", - "group": "set", - "complexity": "O(1) for each element added, so O(N) to add N elements when the command is called with multiple arguments.", - "history": [ - [ - "2.4.0", - "Accepts multiple `member` arguments." - ] - ], + "HPTTL": { + "summary": "Returns the TTL in milliseconds of a hash field.", + "since": "7.4.0", + "group": "hash", + "complexity": "O(N) where N is the number of specified fields", "acl_categories": [ - "@write", - "@set", + "@read", + "@hash", "@fast" ], - "arity": -3, + "arity": -5, "key_specs": [ { "begin_search": { @@ -14689,8 +16417,8 @@ "limit": 0 } }, - "RW": true, - "insert": true + "RO": true, + "access": true } ], "arguments": [ @@ -14701,102 +16429,43 @@ "key_spec_index": 0 }, { - "name": "member", - "type": "string", - "display_text": "member", - "multiple": true + "name": "fields", + "type": "block", + "token": "FIELDS", + "arguments": [ + { + "name": "numfields", + "type": "integer", + "display_text": "numfields" + }, + { + "name": "field", + "type": "string", + "display_text": "field", + "multiple": true + } + ] } ], "command_flags": [ - "write", - "denyoom", + "readonly", "fast" - ] - }, - "SAVE": { - "summary": "Synchronously saves the database(s) to disk.", - "since": "1.0.0", - "group": "server", - "complexity": "O(N) where N is the total number of keys in all databases", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" ], - "arity": 1, - "command_flags": [ - "admin", - "noscript", - "no_async_loading", - "no_multi" + "hints": [ + "nondeterministic_output" ] }, - "SCAN": { - "summary": "Iterates over the key names in the database.", - "since": "2.8.0", - "group": "generic", - "complexity": "O(1) for every call. O(N) for a complete iteration, including enough command calls for the cursor to return back to 0. N is the number of elements inside the collection.", - "history": [ - [ - "6.0.0", - "Added the `TYPE` subcommand." - ] - ], + "HRANDFIELD": { + "summary": "Returns one or more random fields from a hash.", + "since": "6.2.0", + "group": "hash", + "complexity": "O(N) where N is the number of fields returned", "acl_categories": [ - "@keyspace", "@read", + "@hash", "@slow" ], "arity": -2, - "arguments": [ - { - "name": "cursor", - "type": "integer", - "display_text": "cursor" - }, - { - "name": "pattern", - "type": "pattern", - "display_text": "pattern", - "token": "MATCH", - "optional": true - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true - }, - { - "name": "type", - "type": "string", - "display_text": "type", - "token": "TYPE", - "since": "6.0.0", - "optional": true - } - ], - "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output", - "request_policy:special", - "response_policy:special" - ] - }, - "SCARD": { - "summary": "Returns the number of members in a set.", - "since": "1.0.0", - "group": "set", - "complexity": "O(1)", - "acl_categories": [ - "@read", - "@set", - "@fast" - ], - "arity": 2, "key_specs": [ { "begin_search": { @@ -14813,7 +16482,8 @@ "limit": 0 } }, - "RO": true + "RO": true, + "access": true } ], "arguments": [ @@ -14822,206 +16492,45 @@ "type": "key", "display_text": "key", "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "SCRIPT": { - "summary": "A container for Lua scripts management commands.", - "since": "2.6.0", - "group": "scripting", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" - ], - "arity": -2 - }, - "SCRIPT DEBUG": { - "summary": "Sets the debug mode of server-side Lua scripts.", - "since": "3.2.0", - "group": "scripting", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@scripting" - ], - "arity": 3, - "arguments": [ - { - "name": "mode", - "type": "oneof", - "arguments": [ - { - "name": "yes", - "type": "pure-token", - "display_text": "yes", - "token": "YES" - }, - { - "name": "sync", - "type": "pure-token", - "display_text": "sync", - "token": "SYNC" - }, - { - "name": "no", - "type": "pure-token", - "display_text": "no", - "token": "NO" - } - ] - } - ], - "command_flags": [ - "noscript" - ] - }, - "SCRIPT EXISTS": { - "summary": "Determines whether server-side Lua scripts exist in the script cache.", - "since": "2.6.0", - "group": "scripting", - "complexity": "O(N) with N being the number of scripts to check (so checking a single script is an O(1) operation).", - "acl_categories": [ - "@slow", - "@scripting" - ], - "arity": -3, - "arguments": [ - { - "name": "sha1", - "type": "string", - "display_text": "sha1", - "multiple": true - } - ], - "command_flags": [ - "noscript" - ], - "hints": [ - "request_policy:all_shards", - "response_policy:agg_logical_and" - ] - }, - "SCRIPT FLUSH": { - "summary": "Removes all server-side Lua scripts from the script cache.", - "since": "2.6.0", - "group": "scripting", - "complexity": "O(N) with N being the number of scripts in cache", - "history": [ - [ - "6.2.0", - "Added the `ASYNC` and `SYNC` flushing mode modifiers." - ] - ], - "acl_categories": [ - "@slow", - "@scripting" - ], - "arity": -2, - "arguments": [ + }, { - "name": "flush-type", - "type": "oneof", - "since": "6.2.0", + "name": "options", + "type": "block", "optional": true, "arguments": [ { - "name": "async", - "type": "pure-token", - "display_text": "async", - "token": "ASYNC" + "name": "count", + "type": "integer", + "display_text": "count" }, { - "name": "sync", + "name": "withvalues", "type": "pure-token", - "display_text": "sync", - "token": "SYNC" + "display_text": "withvalues", + "token": "WITHVALUES", + "optional": true } ] } ], "command_flags": [ - "noscript" - ], - "hints": [ - "request_policy:all_nodes", - "response_policy:all_succeeded" - ] - }, - "SCRIPT HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "5.0.0", - "group": "scripting", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@scripting" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "SCRIPT KILL": { - "summary": "Terminates a server-side Lua script during execution.", - "since": "2.6.0", - "group": "scripting", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@scripting" - ], - "arity": 2, - "command_flags": [ - "noscript", - "allow_busy" - ], - "hints": [ - "request_policy:all_shards", - "response_policy:one_succeeded" - ] - }, - "SCRIPT LOAD": { - "summary": "Loads a server-side Lua script to the script cache.", - "since": "2.6.0", - "group": "scripting", - "complexity": "O(N) with N being the length in bytes of the script body.", - "acl_categories": [ - "@slow", - "@scripting" - ], - "arity": 3, - "arguments": [ - { - "name": "script", - "type": "string", - "display_text": "script" - } - ], - "command_flags": [ - "noscript", - "stale" + "readonly" ], "hints": [ - "request_policy:all_nodes", - "response_policy:all_succeeded" + "nondeterministic_output" ] }, - "SDIFF": { - "summary": "Returns the difference of multiple sets.", - "since": "1.0.0", - "group": "set", - "complexity": "O(N) where N is the total number of elements in all given sets.", + "HSCAN": { + "summary": "Iterates over fields and values of a hash.", + "since": "2.8.0", + "group": "hash", + "complexity": "O(1) for every call. O(N) for a complete iteration, including enough command calls for the cursor to return back to 0. N is the number of elements inside the collection.", "acl_categories": [ "@read", - "@set", + "@hash", "@slow" ], - "arity": -2, + "arity": -3, "key_specs": [ { "begin_search": { @@ -15033,7 +16542,7 @@ "find_keys": { "type": "range", "spec": { - "lastkey": -1, + "lastkey": 0, "keystep": 1, "limit": 0 } @@ -15047,28 +16556,59 @@ "name": "key", "type": "key", "display_text": "key", - "key_spec_index": 0, - "multiple": true + "key_spec_index": 0 + }, + { + "name": "cursor", + "type": "integer", + "display_text": "cursor" + }, + { + "name": "pattern", + "type": "pattern", + "display_text": "pattern", + "token": "MATCH", + "optional": true + }, + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "COUNT", + "optional": true + }, + { + "name": "novalues", + "type": "pure-token", + "display_text": "novalues", + "token": "NOVALUES", + "optional": true } ], "command_flags": [ "readonly" ], "hints": [ - "nondeterministic_output_order" + "nondeterministic_output" ] }, - "SDIFFSTORE": { - "summary": "Stores the difference of multiple sets in a key.", - "since": "1.0.0", - "group": "set", - "complexity": "O(N) where N is the total number of elements in all given sets.", + "HSET": { + "summary": "Creates or modifies the value of a field in a hash.", + "since": "2.0.0", + "group": "hash", + "complexity": "O(1) for each field/value pair added, so O(N) to add N field/value pairs when the command is called with multiple field/value pairs.", + "history": [ + [ + "4.0.0", + "Accepts multiple `field` and `value` arguments." + ] + ], "acl_categories": [ "@write", - "@set", - "@slow" + "@hash", + "@fast" ], - "arity": -3, + "arity": -4, "key_specs": [ { "begin_search": { @@ -15085,107 +16625,54 @@ "limit": 0 } }, - "OW": true, + "RW": true, "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 }, { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 0 + "name": "data", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "field", + "type": "string", + "display_text": "field" + }, + { + "name": "value", + "type": "string", + "display_text": "value" } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "destination", - "type": "key", - "display_text": "destination", - "key_spec_index": 0 - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 1, - "multiple": true + ] } ], "command_flags": [ "write", - "denyoom" - ] - }, - "SELECT": { - "summary": "Changes the selected database.", - "since": "1.0.0", - "group": "connection", - "complexity": "O(1)", - "acl_categories": [ - "@fast", - "@connection" - ], - "arity": 2, - "arguments": [ - { - "name": "index", - "type": "integer", - "display_text": "index" - } - ], - "command_flags": [ - "loading", - "stale", + "denyoom", "fast" ] }, - "SET": { - "summary": "Sets the string value of a key, ignoring its type. The key is created if it doesn't exist.", - "since": "1.0.0", - "group": "string", - "complexity": "O(1)", - "history": [ - [ - "2.6.12", - "Added the `EX`, `PX`, `NX` and `XX` options." - ], - [ - "6.0.0", - "Added the `KEEPTTL` option." - ], - [ - "6.2.0", - "Added the `GET`, `EXAT` and `PXAT` option." - ], - [ - "7.0.0", - "Allowed the `NX` and `GET` options to be used together." - ], - [ - "8.4.0", - "Added 'IFEQ', 'IFNE', 'IFDEQ', 'IFDNE' options." - ] - ], + "HSETEX": { + "summary": "Set the value of one or more fields of a given hash key, and optionally set their expiration.", + "since": "8.0.0", + "group": "hash", + "complexity": "O(N) where N is the number of fields being set.", "acl_categories": [ "@write", - "@string", - "@slow" + "@hash", + "@fast" ], - "arity": -3, + "arity": -6, "key_specs": [ { - "notes": "RW and ACCESS due to the optional `GET` argument", "begin_search": { "type": "index", "spec": { @@ -15201,9 +16688,7 @@ } }, "RW": true, - "access": true, - "update": true, - "variable_flags": true + "update": true } ], "arguments": [ @@ -15213,67 +16698,25 @@ "display_text": "key", "key_spec_index": 0 }, - { - "name": "value", - "type": "string", - "display_text": "value" - }, { "name": "condition", "type": "oneof", - "since": "2.6.12", "optional": true, "arguments": [ { - "name": "nx", + "name": "fnx", "type": "pure-token", - "display_text": "nx", - "token": "NX" + "display_text": "fnx", + "token": "FNX" }, { - "name": "xx", + "name": "fxx", "type": "pure-token", - "display_text": "xx", - "token": "XX" - }, - { - "name": "ifeq-value", - "type": "string", - "display_text": "ifeq-value", - "token": "IFEQ", - "since": "8.4.0" - }, - { - "name": "ifne-value", - "type": "string", - "display_text": "ifne-value", - "token": "IFNE", - "since": "8.4.0" - }, - { - "name": "ifdeq-digest", - "type": "integer", - "display_text": "ifdeq-digest", - "token": "IFDEQ", - "since": "8.4.0" - }, - { - "name": "ifdne-digest", - "type": "integer", - "display_text": "ifdne-digest", - "token": "IFDNE", - "since": "8.4.0" + "display_text": "fxx", + "token": "FXX" } ] }, - { - "name": "get", - "type": "pure-token", - "display_text": "get", - "token": "GET", - "since": "6.2.0", - "optional": true - }, { "name": "expiration", "type": "oneof", @@ -15283,54 +16726,79 @@ "name": "seconds", "type": "integer", "display_text": "seconds", - "token": "EX", - "since": "2.6.12" + "token": "EX" }, { "name": "milliseconds", "type": "integer", "display_text": "milliseconds", - "token": "PX", - "since": "2.6.12" + "token": "PX" }, { "name": "unix-time-seconds", "type": "unix-time", "display_text": "unix-time-seconds", - "token": "EXAT", - "since": "6.2.0" + "token": "EXAT" }, { "name": "unix-time-milliseconds", "type": "unix-time", "display_text": "unix-time-milliseconds", - "token": "PXAT", - "since": "6.2.0" + "token": "PXAT" }, { "name": "keepttl", "type": "pure-token", "display_text": "keepttl", - "token": "KEEPTTL", - "since": "6.0.0" + "token": "KEEPTTL" + } + ] + }, + { + "name": "fields", + "type": "block", + "token": "FIELDS", + "arguments": [ + { + "name": "numfields", + "type": "integer", + "display_text": "numfields" + }, + { + "name": "data", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "field", + "type": "string", + "display_text": "field" + }, + { + "name": "value", + "type": "string", + "display_text": "value" + } + ] } ] } ], "command_flags": [ "write", - "denyoom" + "denyoom", + "fast" ] }, - "SETBIT": { - "summary": "Sets or clears the bit at offset of the string value. Creates the key if it doesn't exist.", - "since": "2.2.0", - "group": "bitmap", + "HSETNX": { + "summary": "Sets the value of a field in a hash only when the field doesn't exist.", + "since": "2.0.0", + "group": "hash", "complexity": "O(1)", "acl_categories": [ "@write", - "@bitmap", - "@slow" + "@hash", + "@fast" ], "arity": 4, "key_specs": [ @@ -15350,8 +16818,7 @@ } }, "RW": true, - "access": true, - "update": true + "insert": true } ], "arguments": [ @@ -15362,34 +16829,33 @@ "key_spec_index": 0 }, { - "name": "offset", - "type": "integer", - "display_text": "offset" + "name": "field", + "type": "string", + "display_text": "field" }, { "name": "value", - "type": "integer", + "type": "string", "display_text": "value" } ], "command_flags": [ "write", - "denyoom" + "denyoom", + "fast" ] }, - "SETEX": { - "summary": "Sets the string value and expiration time of a key. Creates the key if it doesn't exist.", - "since": "2.0.0", - "group": "string", + "HSTRLEN": { + "summary": "Returns the length of the value of a field.", + "since": "3.2.0", + "group": "hash", "complexity": "O(1)", - "deprecated_since": "2.6.12", - "replaced_by": "`SET` with the `EX` argument", "acl_categories": [ - "@write", - "@string", - "@slow" + "@read", + "@hash", + "@fast" ], - "arity": 4, + "arity": 3, "key_specs": [ { "begin_search": { @@ -15406,8 +16872,7 @@ "limit": 0 } }, - "OW": true, - "update": true + "RO": true } ], "arguments": [ @@ -15418,37 +16883,27 @@ "key_spec_index": 0 }, { - "name": "seconds", - "type": "integer", - "display_text": "seconds" - }, - { - "name": "value", + "name": "field", "type": "string", - "display_text": "value" + "display_text": "field" } ], "command_flags": [ - "write", - "denyoom" - ], - "doc_flags": [ - "deprecated" + "readonly", + "fast" ] }, - "SETNX": { - "summary": "Set the string value of a key only when the key doesn't exist.", - "since": "1.0.0", - "group": "string", - "complexity": "O(1)", - "deprecated_since": "2.6.12", - "replaced_by": "`SET` with the `NX` argument", + "HTTL": { + "summary": "Returns the TTL in seconds of a hash field.", + "since": "7.4.0", + "group": "hash", + "complexity": "O(N) where N is the number of specified fields", "acl_categories": [ - "@write", - "@string", + "@read", + "@hash", "@fast" ], - "arity": 3, + "arity": -5, "key_specs": [ { "begin_search": { @@ -15465,8 +16920,8 @@ "limit": 0 } }, - "OW": true, - "insert": true + "RO": true, + "access": true } ], "arguments": [ @@ -15477,31 +16932,43 @@ "key_spec_index": 0 }, { - "name": "value", - "type": "string", - "display_text": "value" + "name": "fields", + "type": "block", + "token": "FIELDS", + "arguments": [ + { + "name": "numfields", + "type": "integer", + "display_text": "numfields" + }, + { + "name": "field", + "type": "string", + "display_text": "field", + "multiple": true + } + ] } ], "command_flags": [ - "write", - "denyoom", + "readonly", "fast" ], - "doc_flags": [ - "deprecated" + "hints": [ + "nondeterministic_output" ] }, - "SETRANGE": { - "summary": "Overwrites a part of a string value with another by an offset. Creates the key if it doesn't exist.", - "since": "2.2.0", - "group": "string", - "complexity": "O(1), not counting the time taken to copy the new string in place. Usually, this string is very small so the amortized complexity is O(1). Otherwise, complexity is O(M) with M being the length of the value argument.", + "HVALS": { + "summary": "Returns all values in a hash.", + "since": "2.0.0", + "group": "hash", + "complexity": "O(N) where N is the size of the hash.", "acl_categories": [ - "@write", - "@string", + "@read", + "@hash", "@slow" ], - "arity": 4, + "arity": 2, "key_specs": [ { "begin_search": { @@ -15518,8 +16985,8 @@ "limit": 0 } }, - "RW": true, - "update": true + "RO": true, + "access": true } ], "arguments": [ @@ -15528,105 +16995,26 @@ "type": "key", "display_text": "key", "key_spec_index": 0 - }, - { - "name": "offset", - "type": "integer", - "display_text": "offset" - }, - { - "name": "value", - "type": "string", - "display_text": "value" } ], "command_flags": [ - "write", - "denyoom" - ] - }, - "SHUTDOWN": { - "summary": "Synchronously saves the database(s) to disk and shuts down the Redis server.", - "since": "1.0.0", - "group": "server", - "complexity": "O(N) when saving, where N is the total number of keys in all databases when saving data, otherwise O(1)", - "history": [ - [ - "7.0.0", - "Added the `NOW`, `FORCE` and `ABORT` modifiers." - ] - ], - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": -1, - "arguments": [ - { - "name": "save-selector", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "nosave", - "type": "pure-token", - "display_text": "nosave", - "token": "NOSAVE" - }, - { - "name": "save", - "type": "pure-token", - "display_text": "save", - "token": "SAVE" - } - ] - }, - { - "name": "now", - "type": "pure-token", - "display_text": "now", - "token": "NOW", - "since": "7.0.0", - "optional": true - }, - { - "name": "force", - "type": "pure-token", - "display_text": "force", - "token": "FORCE", - "since": "7.0.0", - "optional": true - }, - { - "name": "abort", - "type": "pure-token", - "display_text": "abort", - "token": "ABORT", - "since": "7.0.0", - "optional": true - } + "readonly" ], - "command_flags": [ - "admin", - "noscript", - "loading", - "stale", - "no_multi", - "allow_busy" + "hints": [ + "nondeterministic_output_order" ] }, - "SINTER": { - "summary": "Returns the intersect of multiple sets.", + "INCR": { + "summary": "Increments the integer value of a key by one. Uses 0 as initial value if the key doesn't exist.", "since": "1.0.0", - "group": "set", - "complexity": "O(N*M) worst case where N is the cardinality of the smallest set and M is the number of sets.", + "group": "string", + "complexity": "O(1)", "acl_categories": [ - "@read", - "@set", - "@slow" + "@write", + "@string", + "@fast" ], - "arity": -2, + "arity": 2, "key_specs": [ { "begin_search": { @@ -15638,13 +17026,14 @@ "find_keys": { "type": "range", "spec": { - "lastkey": -1, + "lastkey": 0, "keystep": 1, "limit": 0 } }, - "RO": true, - "access": true + "RW": true, + "access": true, + "update": true } ], "arguments": [ @@ -15652,28 +17041,26 @@ "name": "key", "type": "key", "display_text": "key", - "key_spec_index": 0, - "multiple": true + "key_spec_index": 0 } ], "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output_order" + "write", + "denyoom", + "fast" ] }, - "SINTERCARD": { - "summary": "Returns the number of members of the intersect of multiple sets.", - "since": "7.0.0", - "group": "set", - "complexity": "O(N*M) worst case where N is the cardinality of the smallest set and M is the number of sets.", + "INCRBY": { + "summary": "Increments the integer value of a key by a number. Uses 0 as initial value if the key doesn't exist.", + "since": "1.0.0", + "group": "string", + "complexity": "O(1)", "acl_categories": [ - "@read", - "@set", - "@slow" + "@write", + "@string", + "@fast" ], - "arity": -3, + "arity": 3, "key_specs": [ { "begin_search": { @@ -15683,54 +17070,48 @@ } }, "find_keys": { - "type": "keynum", + "type": "range", "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 + "lastkey": 0, + "keystep": 1, + "limit": 0 } }, - "RO": true, - "access": true + "RW": true, + "access": true, + "update": true } ], "arguments": [ - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, { "name": "key", "type": "key", "display_text": "key", - "key_spec_index": 0, - "multiple": true + "key_spec_index": 0 }, { - "name": "limit", + "name": "increment", "type": "integer", - "display_text": "limit", - "token": "LIMIT", - "optional": true + "display_text": "increment" } ], "command_flags": [ - "readonly", - "movablekeys" + "write", + "denyoom", + "fast" ] }, - "SINTERSTORE": { - "summary": "Stores the intersect of multiple sets in a key.", - "since": "1.0.0", - "group": "set", - "complexity": "O(N*M) worst case where N is the cardinality of the smallest set and M is the number of sets.", - "acl_categories": [ - "@write", - "@set", - "@slow" + "INCRBYFLOAT": { + "summary": "Increment the floating point value of a key by a number. Uses 0 as initial value if the key doesn't exist.", + "since": "2.6.0", + "group": "string", + "complexity": "O(1)", + "acl_categories": [ + "@write", + "@string", + "@fast" ], - "arity": -3, + "arity": 3, "key_specs": [ { "begin_search": { @@ -15747,59 +17128,41 @@ "limit": 0 } }, - "OW": true, + "RW": true, + "access": true, "update": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true } ], "arguments": [ { - "name": "destination", + "name": "key", "type": "key", - "display_text": "destination", + "display_text": "key", "key_spec_index": 0 }, { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 1, - "multiple": true + "name": "increment", + "type": "double", + "display_text": "increment" } ], "command_flags": [ "write", - "denyoom" + "denyoom", + "fast" ] }, - "SISMEMBER": { - "summary": "Determines whether a member belongs to a set.", - "since": "1.0.0", - "group": "set", + "INCREX": { + "summary": "Increments the numeric value of a key by a number and sets its expiration time. Uses 0 as initial value if the key doesn't exist.", + "since": "8.8.0", + "group": "string", "complexity": "O(1)", "acl_categories": [ - "@read", - "@set", + "@write", + "@string", "@fast" ], - "arity": 3, + "arity": -2, "key_specs": [ { "begin_search": { @@ -15816,7 +17179,9 @@ "limit": 0 } }, - "RO": true + "RW": true, + "access": true, + "update": true } ], "arguments": [ @@ -15827,194 +17192,145 @@ "key_spec_index": 0 }, { - "name": "member", + "name": "increment", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "float", + "type": "double", + "display_text": "float", + "token": "BYFLOAT" + }, + { + "name": "integer", + "type": "integer", + "display_text": "integer", + "token": "BYINT" + } + ] + }, + { + "name": "saturate", + "type": "pure-token", + "display_text": "saturate", + "token": "SATURATE", + "summary": "Saturate the result to LBOUND/UBOUND (or the type limits when no explicit bound is given) when out of bounds. Without this option, out-of-bounds operations are rejected and reply [current_value, 0].", + "optional": true + }, + { + "name": "lowerbound", "type": "string", - "display_text": "member" - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "SLAVEOF": { - "summary": "Sets a Redis server as a replica of another, or promotes it to being a master.", - "since": "1.0.0", - "group": "server", - "complexity": "O(1)", - "deprecated_since": "5.0.0", - "replaced_by": "`REPLICAOF`", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 3, - "arguments": [ + "display_text": "lowerbound", + "token": "LBOUND", + "summary": "Integer when used with BYINT, floating-point when used with BYFLOAT.", + "optional": true + }, { - "name": "args", + "name": "upperbound", + "type": "string", + "display_text": "upperbound", + "token": "UBOUND", + "summary": "Integer when used with BYINT, floating-point when used with BYFLOAT.", + "optional": true + }, + { + "name": "expiration", "type": "oneof", + "optional": true, "arguments": [ { - "name": "host-port", - "type": "block", - "arguments": [ - { - "name": "host", - "type": "string", - "display_text": "host" - }, - { - "name": "port", - "type": "integer", - "display_text": "port" - } - ] + "name": "seconds", + "type": "integer", + "display_text": "seconds", + "token": "EX" }, { - "name": "no-one", - "type": "block", - "arguments": [ - { - "name": "no", - "type": "pure-token", - "display_text": "no", - "token": "NO" - }, - { - "name": "one", - "type": "pure-token", - "display_text": "one", - "token": "ONE" - } - ] + "name": "milliseconds", + "type": "integer", + "display_text": "milliseconds", + "token": "PX" + }, + { + "name": "unix-time-seconds", + "type": "unix-time", + "display_text": "unix-time-seconds", + "token": "EXAT" + }, + { + "name": "unix-time-milliseconds", + "type": "unix-time", + "display_text": "unix-time-milliseconds", + "token": "PXAT" + }, + { + "name": "persist", + "type": "pure-token", + "display_text": "persist", + "token": "PERSIST" } ] + }, + { + "name": "enx", + "type": "pure-token", + "display_text": "enx", + "token": "ENX", + "summary": "Only set the expiration if the key currently has no TTL. Requires one of EX/PX/EXAT/PXAT; cannot be combined with PERSIST.", + "optional": true } ], "command_flags": [ - "admin", - "noscript", - "stale", - "no_async_loading" - ], - "doc_flags": [ - "deprecated" + "write", + "denyoom", + "fast" ] }, - "SLOWLOG": { - "summary": "A container for slow log commands.", - "since": "2.2.12", - "group": "server", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" - ], - "arity": -2 - }, - "SLOWLOG GET": { - "summary": "Returns the slow log's entries.", - "since": "2.2.12", + "INFO": { + "summary": "Returns information and statistics about the server.", + "since": "1.0.0", "group": "server", - "complexity": "O(N) where N is the number of entries returned", + "complexity": "O(1)", "history": [ [ - "4.0.0", - "Added client IP address, port and name to the reply." + "7.0.0", + "Added support for taking multiple section arguments." ] ], "acl_categories": [ - "@admin", "@slow", "@dangerous" ], - "arity": -2, + "arity": -1, "arguments": [ { - "name": "count", - "type": "integer", - "display_text": "count", - "optional": true + "name": "section", + "type": "string", + "display_text": "section", + "optional": true, + "multiple": true } ], "command_flags": [ - "admin", "loading", "stale" ], "hints": [ - "request_policy:all_nodes", - "nondeterministic_output" + "nondeterministic_output", + "request_policy:all_shards", + "response_policy:special" ] }, - "SLOWLOG HELP": { - "summary": "Show helpful text about the different subcommands", - "since": "6.2.0", - "group": "server", - "complexity": "O(1)", + "JSON.ARRAPPEND": { + "summary": "Append the JSON values into the array at path after the last element in it", + "since": "1.0.0", + "group": "module", + "complexity": "O(1) when path is evaluated to a single value, O(N) when path is evaluated to multiple values, where N is the size of the key", "acl_categories": [ - "@slow" + "@write", + "@json" ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "SLOWLOG LEN": { - "summary": "Returns the number of entries in the slow log.", - "since": "2.2.12", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "loading", - "stale" - ], - "hints": [ - "request_policy:all_nodes", - "response_policy:agg_sum", - "nondeterministic_output" - ] - }, - "SLOWLOG RESET": { - "summary": "Clears all entries from the slow log.", - "since": "2.2.12", - "group": "server", - "complexity": "O(N) where N is the number of entries in the slowlog", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 2, - "command_flags": [ - "admin", - "loading", - "stale" - ], - "hints": [ - "request_policy:all_nodes", - "response_policy:all_succeeded" - ] - }, - "SMEMBERS": { - "summary": "Returns all members of a set.", - "since": "1.0.0", - "group": "set", - "complexity": "O(N) where N is the set cardinality.", - "acl_categories": [ - "@read", - "@set", - "@slow" - ], - "arity": 2, + "arity": -3, "key_specs": [ { "begin_search": { @@ -16031,8 +17347,7 @@ "limit": 0 } }, - "RO": true, - "access": true + "RW": true } ], "arguments": [ @@ -16041,26 +17356,36 @@ "type": "key", "display_text": "key", "key_spec_index": 0 + }, + { + "name": "path", + "type": "string", + "display_text": "path" + }, + { + "name": "json", + "type": "string", + "display_text": "json", + "multiple": true } ], "command_flags": [ - "readonly" + "write", + "denyoom", + "module" ], - "hints": [ - "nondeterministic_output_order" - ] + "module": "ReJSON" }, - "SMISMEMBER": { - "summary": "Determines whether multiple members belong to a set.", - "since": "6.2.0", - "group": "set", - "complexity": "O(N) where N is the number of elements being checked for membership", + "JSON.ARRINDEX": { + "summary": "Search for the first occurrence of a JSON value in an array", + "since": "1.0.0", + "group": "module", + "complexity": "O(N) when path is evaluated to a single value where N is the size of the array, O(N) when path is evaluated to multiple values, where N is the size of the key", "acl_categories": [ "@read", - "@set", - "@fast" + "@json" ], - "arity": -3, + "arity": -4, "key_specs": [ { "begin_search": { @@ -16077,8 +17402,7 @@ "limit": 0 } }, - "RO": true, - "access": true + "RO": true } ], "arguments": [ @@ -16089,28 +17413,50 @@ "key_spec_index": 0 }, { - "name": "member", + "name": "path", "type": "string", - "display_text": "member", - "multiple": true + "display_text": "path" + }, + { + "name": "json-value", + "type": "string", + "display_text": "json-value" + }, + { + "name": "range", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "start", + "type": "integer", + "display_text": "start" + }, + { + "name": "stop", + "type": "integer", + "display_text": "stop", + "optional": true + } + ] } ], "command_flags": [ "readonly", - "fast" - ] + "module" + ], + "module": "ReJSON" }, - "SMOVE": { - "summary": "Moves a member from one set to another.", + "JSON.ARRINSERT": { + "summary": "Insert the json values into the array at path before the index (shifts to the right)", "since": "1.0.0", - "group": "set", - "complexity": "O(1)", + "group": "module", + "complexity": "O(N) when path is evaluated to a single value where N is the size of the array, O(N) when path is evaluated to multiple values, where N is the size of the key", "acl_categories": [ "@write", - "@set", - "@fast" + "@json" ], - "arity": 4, + "arity": -5, "key_specs": [ { "begin_search": { @@ -16127,15 +17473,56 @@ "limit": 0 } }, - "RW": true, - "access": true, - "delete": true + "RW": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "path", + "type": "string", + "display_text": "path" }, + { + "name": "index", + "type": "integer", + "display_text": "index" + }, + { + "name": "json", + "type": "string", + "display_text": "json", + "multiple": true + } + ], + "command_flags": [ + "write", + "denyoom", + "module" + ], + "module": "ReJSON" + }, + "JSON.ARRLEN": { + "summary": "Report the length of the JSON array at path in key", + "since": "1.0.0", + "group": "module", + "complexity": "O(1) where path is evaluated to a single value, O(N) where path is evaluated to multiple values, where N is the size of the key", + "acl_categories": [ + "@read", + "@json" + ], + "arity": -2, + "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 2 + "index": 1 } }, "find_keys": { @@ -16146,46 +17533,37 @@ "limit": 0 } }, - "RW": true, - "insert": true + "RO": true } ], "arguments": [ { - "name": "source", + "name": "key", "type": "key", - "display_text": "source", + "display_text": "key", "key_spec_index": 0 }, { - "name": "destination", - "type": "key", - "display_text": "destination", - "key_spec_index": 1 - }, - { - "name": "member", + "name": "path", "type": "string", - "display_text": "member" + "display_text": "path", + "optional": true } ], "command_flags": [ - "write", - "fast" - ] + "readonly", + "module" + ], + "module": "ReJSON" }, - "SORT": { - "summary": "Sorts the elements in a list, a set, or a sorted set, optionally storing the result.", + "JSON.ARRPOP": { + "summary": "Remove and return the element at the specified index in the array at path", "since": "1.0.0", - "group": "generic", - "complexity": "O(N+M*log(M)) where N is the number of elements in the list or set to sort, and M the number of returned elements. When the elements are not sorted, complexity is O(N).", + "group": "module", + "complexity": "O(N) when path is evaluated to a single value where N is the size of the array and the specified index is not the last element, O(1) when path is evaluated to a single value and the specified index is the last element, or O(N) when path is evaluated to multiple values, where N is the size of the key", "acl_categories": [ "@write", - "@set", - "@sortedset", - "@list", - "@slow", - "@dangerous" + "@json" ], "arity": -2, "key_specs": [ @@ -16204,34 +17582,7 @@ "limit": 0 } }, - "RO": true, - "access": true - }, - { - "notes": "For the optional BY/GET keyword. It is marked 'unknown' because the key names derive from the content of the key we sort", - "begin_search": { - "type": "unknown", - "spec": {} - }, - "find_keys": { - "type": "unknown", - "spec": {} - }, - "RO": true, - "access": true - }, - { - "notes": "For the optional STORE keyword. It is marked 'unknown' because the keyword can appear anywhere in the argument array", - "begin_search": { - "type": "unknown", - "spec": {} - }, - "find_keys": { - "type": "unknown", - "spec": {} - }, - "OW": true, - "update": true + "RW": true } ], "arguments": [ @@ -16242,96 +17593,72 @@ "key_spec_index": 0 }, { - "name": "by-pattern", - "type": "pattern", - "display_text": "pattern", - "key_spec_index": 1, - "token": "BY", - "optional": true - }, - { - "name": "limit", + "name": "format", "type": "block", - "token": "LIMIT", + "token": "FORMAT", "optional": true, "arguments": [ { - "name": "offset", - "type": "integer", - "display_text": "offset" - }, - { - "name": "count", - "type": "integer", - "display_text": "count" - } - ] - }, - { - "name": "get-pattern", - "type": "pattern", - "display_text": "pattern", - "key_spec_index": 1, - "token": "GET", - "optional": true, - "multiple": true, - "multiple_token": true + "name": "format-token", + "type": "oneof", + "arguments": [ + { + "name": "STRINGS", + "type": "pure-token", + "display_text": "STRINGS", + "token": "STRINGS" + }, + { + "name": "EXPAND1", + "type": "pure-token", + "display_text": "EXPAND1", + "token": "EXPAND1" + }, + { + "name": "EXPAND", + "type": "pure-token", + "display_text": "EXPAND", + "token": "EXPAND" + } + ] + } + ] }, { - "name": "order", - "type": "oneof", + "name": "path_index", + "type": "block", "optional": true, "arguments": [ { - "name": "asc", - "type": "pure-token", - "display_text": "asc", - "token": "ASC" + "name": "path", + "type": "string", + "display_text": "path" }, { - "name": "desc", - "type": "pure-token", - "display_text": "desc", - "token": "DESC" + "name": "index", + "type": "integer", + "display_text": "index", + "optional": true } ] - }, - { - "name": "sorting", - "type": "pure-token", - "display_text": "sorting", - "token": "ALPHA", - "optional": true - }, - { - "name": "destination", - "type": "key", - "display_text": "destination", - "key_spec_index": 2, - "token": "STORE", - "optional": true } ], "command_flags": [ "write", - "denyoom", - "movablekeys" - ] + "module" + ], + "module": "ReJSON" }, - "SORT_RO": { - "summary": "Returns the sorted elements of a list, a set, or a sorted set.", - "since": "7.0.0", - "group": "generic", - "complexity": "O(N+M*log(M)) where N is the number of elements in the list or set to sort, and M the number of returned elements. When the elements are not sorted, complexity is O(N).", + "JSON.ARRTRIM": { + "summary": "Trim an array so that it contains only the specified inclusive range of elements", + "since": "1.0.0", + "group": "module", + "complexity": "O(N) when path is evaluated to a single value where N is the size of the array, O(N) when path is evaluated to multiple values, where N is the size of the key", "acl_categories": [ - "@read", - "@set", - "@sortedset", - "@list", - "@slow", - "@dangerous" + "@write", + "@json" ], - "arity": -2, + "arity": 5, "key_specs": [ { "begin_search": { @@ -16348,21 +17675,7 @@ "limit": 0 } }, - "RO": true, - "access": true - }, - { - "notes": "For the optional BY/GET keyword. It is marked 'unknown' because the key names derive from the content of the key we sort", - "begin_search": { - "type": "unknown", - "spec": {} - }, - "find_keys": { - "type": "unknown", - "spec": {} - }, - "RO": true, - "access": true + "RW": true } ], "arguments": [ @@ -16373,88 +17686,35 @@ "key_spec_index": 0 }, { - "name": "by-pattern", - "type": "pattern", - "display_text": "pattern", - "key_spec_index": 1, - "token": "BY", - "optional": true - }, - { - "name": "limit", - "type": "block", - "token": "LIMIT", - "optional": true, - "arguments": [ - { - "name": "offset", - "type": "integer", - "display_text": "offset" - }, - { - "name": "count", - "type": "integer", - "display_text": "count" - } - ] - }, - { - "name": "get-pattern", - "type": "pattern", - "display_text": "pattern", - "key_spec_index": 1, - "token": "GET", - "optional": true, - "multiple": true, - "multiple_token": true + "name": "path", + "type": "string", + "display_text": "path" }, { - "name": "order", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "asc", - "type": "pure-token", - "display_text": "asc", - "token": "ASC" - }, - { - "name": "desc", - "type": "pure-token", - "display_text": "desc", - "token": "DESC" - } - ] + "name": "start", + "type": "integer", + "display_text": "start" }, { - "name": "sorting", - "type": "pure-token", - "display_text": "sorting", - "token": "ALPHA", - "optional": true + "name": "stop", + "type": "integer", + "display_text": "stop" } ], "command_flags": [ - "readonly", - "movablekeys" - ] - }, - "SPOP": { - "summary": "Returns one or more random members from a set after removing them. Deletes the set if the last member was popped.", - "since": "1.0.0", - "group": "set", - "complexity": "Without the count argument O(1), otherwise O(N) where N is the value of the passed count.", - "history": [ - [ - "3.2.0", - "Added the `count` argument." - ] + "write", + "module" ], + "module": "ReJSON" + }, + "JSON.CLEAR": { + "summary": "Clear container values (arrays/objects) and set numeric values to 0", + "since": "2.0.0", + "group": "module", + "complexity": "O(N) when path is evaluated to a single value where N is the size of the values, O(N) when path is evaluated to multiple values, where N is the size of the key", "acl_categories": [ "@write", - "@set", - "@fast" + "@json" ], "arity": -2, "key_specs": [ @@ -16473,9 +17733,7 @@ "limit": 0 } }, - "RW": true, - "access": true, - "delete": true + "RW": true } ], "arguments": [ @@ -16486,37 +17744,35 @@ "key_spec_index": 0 }, { - "name": "count", - "type": "integer", - "display_text": "count", - "since": "3.2.0", + "name": "path", + "type": "string", + "display_text": "path", "optional": true } ], "command_flags": [ "write", - "fast" + "module" ], - "hints": [ - "nondeterministic_output" - ] + "module": "ReJSON" }, - "SPUBLISH": { - "summary": "Post a message to a shard channel", - "since": "7.0.0", - "group": "pubsub", - "complexity": "O(N) where N is the number of clients subscribed to the receiving shard channel.", + "JSON.DEBUG": { + "summary": "This is a container command for debugging related tasks", + "since": "1.0.0", + "group": "module", + "complexity": "N/A", "acl_categories": [ - "@pubsub", - "@fast" + "@read", + "@json" ], - "arity": 3, + "arity": -2, "key_specs": [ { "begin_search": { - "type": "index", + "type": "keyword", "spec": { - "index": 1 + "keyword": "MEMORY", + "startfrom": 1 } }, "find_keys": { @@ -16527,43 +17783,60 @@ "limit": 0 } }, - "not_key": true + "RO": true } ], "arguments": [ { - "name": "shardchannel", - "type": "string", - "display_text": "shardchannel" + "name": "subcommand", + "type": "oneof", + "arguments": [ + { + "name": "memory", + "type": "pure-token", + "display_text": "memory", + "token": "MEMORY" + }, + { + "name": "help", + "type": "pure-token", + "display_text": "help", + "token": "HELP" + } + ] }, { - "name": "message", + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "optional": true + }, + { + "name": "path", "type": "string", - "display_text": "message" + "display_text": "path", + "optional": true } ], "command_flags": [ - "pubsub", - "loading", - "stale", - "fast" - ] + "readonly", + "module", + "movablekeys" + ], + "hints": [ + "dont_cache" + ], + "module": "ReJSON" }, - "SRANDMEMBER": { - "summary": "Get one or multiple random members from a set", + "JSON.DEL": { + "summary": "Delete a value", "since": "1.0.0", - "group": "set", - "complexity": "Without the count argument O(1), otherwise O(N) where N is the absolute value of the passed count.", - "history": [ - [ - "2.6.0", - "Added the optional `count` argument." - ] - ], + "group": "module", + "complexity": "O(N) when path is evaluated to a single value where N is the size of the deleted value, O(N) when path is evaluated to multiple values, where N is the size of the key", "acl_categories": [ - "@read", - "@set", - "@slow" + "@write", + "@json" ], "arity": -2, "key_specs": [ @@ -16582,8 +17855,7 @@ "limit": 0 } }, - "RO": true, - "access": true + "RW": true } ], "arguments": [ @@ -16594,37 +17866,28 @@ "key_spec_index": 0 }, { - "name": "count", - "type": "integer", - "display_text": "count", - "since": "2.6.0", + "name": "path", + "type": "string", + "display_text": "path", "optional": true } ], "command_flags": [ - "readonly" + "write", + "module" ], - "hints": [ - "nondeterministic_output" - ] + "module": "ReJSON" }, - "SREM": { - "summary": "Removes one or more members from a set. Deletes the set if the last member was removed.", + "JSON.FORGET": { + "summary": "Delete a value", "since": "1.0.0", - "group": "set", - "complexity": "O(N) where N is the number of members to be removed.", - "history": [ - [ - "2.4.0", - "Accepts multiple `member` arguments." - ] - ], + "group": "module", + "complexity": "O(N) when path is evaluated to a single value where N is the size of the deleted value, O(N) when path is evaluated to multiple values, where N is the size of the key", "acl_categories": [ "@write", - "@set", - "@fast" + "@json" ], - "arity": -3, + "arity": -2, "key_specs": [ { "begin_search": { @@ -16641,8 +17904,7 @@ "limit": 0 } }, - "RW": true, - "delete": true + "RW": true } ], "arguments": [ @@ -16653,28 +17915,28 @@ "key_spec_index": 0 }, { - "name": "member", + "name": "path", "type": "string", - "display_text": "member", - "multiple": true + "display_text": "path", + "optional": true } ], "command_flags": [ "write", - "fast" - ] + "module" + ], + "module": "ReJSON" }, - "SSCAN": { - "summary": "Iterates over members of a set.", - "since": "2.8.0", - "group": "set", - "complexity": "O(1) for every call. O(N) for a complete iteration, including enough command calls for the cursor to return back to 0. N is the number of elements inside the collection.", + "JSON.GET": { + "summary": "Get JSON value at path", + "since": "1.0.0", + "group": "module", + "complexity": "O(N) where N is the size of the JSON", "acl_categories": [ "@read", - "@set", - "@slow" + "@json" ], - "arity": -3, + "arity": -2, "key_specs": [ { "begin_search": { @@ -16691,8 +17953,7 @@ "limit": 0 } }, - "RO": true, - "access": true + "RO": true } ], "arguments": [ @@ -16703,42 +17964,100 @@ "key_spec_index": 0 }, { - "name": "cursor", - "type": "integer", - "display_text": "cursor" + "name": "indent", + "type": "block", + "token": "INDENT", + "optional": true, + "arguments": [ + { + "name": "indent", + "type": "string", + "display_text": "indent" + } + ] }, { - "name": "pattern", - "type": "pattern", - "display_text": "pattern", - "token": "MATCH", - "optional": true + "name": "newline", + "type": "block", + "token": "NEWLINE", + "optional": true, + "arguments": [ + { + "name": "newline", + "type": "string", + "display_text": "newline" + } + ] }, { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true + "name": "space", + "type": "block", + "token": "SPACE", + "optional": true, + "arguments": [ + { + "name": "space", + "type": "string", + "display_text": "space" + } + ] + }, + { + "name": "format", + "type": "block", + "token": "FORMAT", + "optional": true, + "arguments": [ + { + "name": "format-token", + "type": "oneof", + "arguments": [ + { + "name": "STRING", + "type": "pure-token", + "display_text": "STRING", + "token": "STRING" + }, + { + "name": "EXPAND1", + "type": "pure-token", + "display_text": "EXPAND1", + "token": "EXPAND1" + }, + { + "name": "EXPAND", + "type": "pure-token", + "display_text": "EXPAND", + "token": "EXPAND" + } + ] + } + ] + }, + { + "name": "path", + "type": "string", + "display_text": "path", + "optional": true, + "multiple": true } ], "command_flags": [ - "readonly" + "readonly", + "module" ], - "hints": [ - "nondeterministic_output" - ] + "module": "ReJSON" }, - "SSUBSCRIBE": { - "summary": "Listens for messages published to shard channels.", - "since": "7.0.0", - "group": "pubsub", - "complexity": "O(N) where N is the number of shard channels to subscribe to.", + "JSON.MERGE": { + "summary": "Merge a given JSON value into matching paths. Consequently, JSON values at matching paths are updated, deleted, or expanded with new children", + "since": "2.6.0", + "group": "module", + "complexity": "O(M+N) when path is evaluated to a single value where M is the size of the original value (if it exists) and N is the size of the new value, O(M+N) when path is evaluated to multiple values where M is the size of the key and N is the size of the new value * the number of original values in the key", "acl_categories": [ - "@pubsub", - "@slow" + "@write", + "@json" ], - "arity": -2, + "arity": -4, "key_specs": [ { "begin_search": { @@ -16750,43 +18069,84 @@ "find_keys": { "type": "range", "spec": { - "lastkey": -1, + "lastkey": 0, "keystep": 1, "limit": 0 } }, - "not_key": true + "RW": true } ], "arguments": [ { - "name": "shardchannel", + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "path", "type": "string", - "display_text": "shardchannel", - "multiple": true + "display_text": "path" + }, + { + "name": "json", + "type": "string", + "display_text": "json" + }, + { + "name": "format", + "type": "block", + "token": "FORMAT", + "optional": true, + "arguments": [ + { + "name": "format-token", + "type": "oneof", + "arguments": [ + { + "name": "STRING", + "type": "pure-token", + "display_text": "STRING", + "token": "STRING" + }, + { + "name": "JSON", + "type": "pure-token", + "display_text": "JSON", + "token": "JSON" + }, + { + "name": "BSON", + "type": "pure-token", + "display_text": "BSON", + "token": "BSON" + } + ] + } + ] } ], "command_flags": [ + "write", "denyoom", - "pubsub", - "noscript", - "loading", - "stale" - ] + "module" + ], + "module": "ReJSON" }, - "STRLEN": { - "summary": "Returns the length of a string value.", - "since": "2.2.0", - "group": "string", - "complexity": "O(1)", + "JSON.MGET": { + "summary": "Return the values at path from multiple key arguments", + "since": "1.0.0", + "group": "module", + "complexity": "O(M*N) when path is evaluated to a single value where M is the number of keys and N is the size of the value, O(N1+N2+...+Nm) when path is evaluated to multiple values where m is the number of keys and Ni is the size of the i-th key", "acl_categories": [ "@read", - "@string", - "@fast" + "@json" ], - "arity": 2, + "arity": -3, "key_specs": [ { + "notes": "The key containing the JSON document", "begin_search": { "type": "index", "spec": { @@ -16809,53 +18169,31 @@ "name": "key", "type": "key", "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly", - "fast" - ] - }, - "SUBSCRIBE": { - "summary": "Listens for messages published to channels.", - "since": "2.0.0", - "group": "pubsub", - "complexity": "O(N) where N is the number of channels to subscribe to.", - "acl_categories": [ - "@pubsub", - "@slow" - ], - "arity": -2, - "arguments": [ + "key_spec_index": 0, + "multiple": true + }, { - "name": "channel", + "name": "path", "type": "string", - "display_text": "channel", - "multiple": true + "display_text": "path" } ], "command_flags": [ - "denyoom", - "pubsub", - "noscript", - "loading", - "stale" - ] + "readonly", + "module" + ], + "module": "ReJSON" }, - "SUBSTR": { - "summary": "Returns a substring from a string value.", - "since": "1.0.0", - "group": "string", - "complexity": "O(N) where N is the length of the returned string. The complexity is ultimately determined by the returned length, but because creating a substring from an existing string is very cheap, it can be considered O(1) for small strings.", - "deprecated_since": "2.0.0", - "replaced_by": "`GETRANGE`", + "JSON.MSET": { + "summary": "Set or update one or more JSON values according to the specified key-path-value triplets", + "since": "2.6.0", + "group": "module", + "complexity": "O(K*(M+N)) where k is the number of keys in the command, when path is evaluated to a single value where M is the size of the original value (if it exists) and N is the size of the new value, or O(K*(M+N)) when path is evaluated to multiple values where M is the size of the key and N is the size of the new value * the number of original values in the key", "acl_categories": [ - "@read", - "@string", - "@slow" + "@write", + "@json" ], - "arity": 4, + "arity": -4, "key_specs": [ { "begin_search": { @@ -16867,51 +18205,56 @@ "find_keys": { "type": "range", "spec": { - "lastkey": 0, - "keystep": 1, + "lastkey": -1, + "keystep": 3, "limit": 0 } }, - "RO": true, - "access": true + "RW": true } ], "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "start", - "type": "integer", - "display_text": "start" - }, - { - "name": "end", - "type": "integer", - "display_text": "end" + "name": "triplet", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "path", + "type": "string", + "display_text": "path" + }, + { + "name": "json", + "type": "string", + "display_text": "json" + } + ] } ], "command_flags": [ - "readonly" + "write", + "denyoom", + "module" ], - "doc_flags": [ - "deprecated" - ] + "module": "ReJSON" }, - "SUNION": { - "summary": "Returns the union of multiple sets.", + "JSON.NUMINCRBY": { + "summary": "Increment the number value stored at path by number", "since": "1.0.0", - "group": "set", - "complexity": "O(N) where N is the total number of elements in all given sets.", + "group": "module", + "complexity": "O(1) when path is evaluated to a single value, O(N) when path is evaluated to multiple values, where N is the size of the key", "acl_categories": [ - "@read", - "@set", - "@slow" + "@write", + "@json" ], - "arity": -2, + "arity": 4, "key_specs": [ { "begin_search": { @@ -16923,13 +18266,12 @@ "find_keys": { "type": "range", "spec": { - "lastkey": -1, + "lastkey": 0, "keystep": 1, "limit": 0 } }, - "RO": true, - "access": true + "RW": true } ], "arguments": [ @@ -16937,28 +18279,35 @@ "name": "key", "type": "key", "display_text": "key", - "key_spec_index": 0, - "multiple": true + "key_spec_index": 0 + }, + { + "name": "path", + "type": "string", + "display_text": "path" + }, + { + "name": "number", + "type": "double", + "display_text": "number" } ], "command_flags": [ - "readonly" + "write", + "module" ], - "hints": [ - "nondeterministic_output_order" - ] + "module": "ReJSON" }, - "SUNIONSTORE": { - "summary": "Stores the union of multiple sets in a key.", + "JSON.NUMMULTBY": { + "summary": "Multiply the number value stored at path by number", "since": "1.0.0", - "group": "set", - "complexity": "O(N) where N is the total number of elements in all given sets.", + "group": "module", + "complexity": "O(1) when path is evaluated to a single value, O(N) when path is evaluated to multiple values, where N is the size of the key", "acl_categories": [ "@write", - "@set", - "@slow" + "@json" ], - "arity": -3, + "arity": 4, "key_specs": [ { "begin_search": { @@ -16975,58 +18324,96 @@ "limit": 0 } }, - "OW": true, - "update": true + "RW": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "path", + "type": "string", + "display_text": "path" }, + { + "name": "number", + "type": "double", + "display_text": "number" + } + ], + "command_flags": [ + "write", + "module" + ], + "module": "ReJSON" + }, + "JSON.NUMPOWBY": { + "summary": "Raise the number value stored at path to the power of number", + "since": "1.0.0", + "group": "module", + "complexity": "O(1) when path is evaluated to a single value, O(N) when path is evaluated to multiple values, where N is the size of the key", + "acl_categories": [ + "@write", + "@json" + ], + "arity": 4, + "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 2 + "index": 1 } }, "find_keys": { "type": "range", "spec": { - "lastkey": -1, + "lastkey": 0, "keystep": 1, "limit": 0 } }, - "RO": true, - "access": true + "RW": true } ], "arguments": [ { - "name": "destination", + "name": "key", "type": "key", - "display_text": "destination", + "display_text": "key", "key_spec_index": 0 }, { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 1, - "multiple": true + "name": "path", + "type": "string", + "display_text": "path" + }, + { + "name": "number", + "type": "double", + "display_text": "number" } ], "command_flags": [ "write", - "denyoom" - ] + "module" + ], + "module": "ReJSON" }, - "SUNSUBSCRIBE": { - "summary": "Stops listening to messages posted to shard channels.", - "since": "7.0.0", - "group": "pubsub", - "complexity": "O(N) where N is the number of shard channels to unsubscribe.", + "JSON.OBJKEYS": { + "summary": "Return the keys in the object that's referenced by path", + "since": "1.0.0", + "group": "module", + "complexity": "O(1) when path is evaluated to a single value, O(N) when path is evaluated to multiple values, where N is the size of the key", "acl_categories": [ - "@pubsub", - "@slow" + "@read", + "@json" ], - "arity": -1, + "arity": -2, "key_specs": [ { "begin_search": { @@ -17038,103 +18425,42 @@ "find_keys": { "type": "range", "spec": { - "lastkey": -1, + "lastkey": 0, "keystep": 1, "limit": 0 } }, - "not_key": true - } - ], - "arguments": [ - { - "name": "shardchannel", - "type": "string", - "display_text": "shardchannel", - "optional": true, - "multiple": true + "RO": true } ], - "command_flags": [ - "pubsub", - "noscript", - "loading", - "stale" - ] - }, - "SWAPDB": { - "summary": "Swaps two Redis databases.", - "since": "4.0.0", - "group": "server", - "complexity": "O(N) where N is the count of clients watching or blocking on keys from both databases.", - "acl_categories": [ - "@keyspace", - "@write", - "@fast", - "@dangerous" - ], - "arity": 3, "arguments": [ { - "name": "index1", - "type": "integer", - "display_text": "index1" + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 }, { - "name": "index2", - "type": "integer", - "display_text": "index2" + "name": "path", + "type": "string", + "display_text": "path", + "optional": true } ], "command_flags": [ - "write", - "fast" - ] - }, - "SYNC": { - "summary": "An internal command used in replication.", - "since": "1.0.0", - "group": "server", - "acl_categories": [ - "@admin", - "@slow", - "@dangerous" - ], - "arity": 1, - "command_flags": [ - "admin", - "noscript", - "no_async_loading", - "no_multi" - ] - }, - "TIME": { - "summary": "Returns the server time.", - "since": "2.6.0", - "group": "server", - "complexity": "O(1)", - "acl_categories": [ - "@fast" - ], - "arity": 1, - "command_flags": [ - "loading", - "stale", - "fast" + "readonly", + "module" ], - "hints": [ - "nondeterministic_output" - ] + "module": "ReJSON" }, - "TOUCH": { - "summary": "Returns the number of existing keys out of those specified after updating the time they were last accessed.", - "since": "3.2.1", - "group": "generic", - "complexity": "O(N) where N is the number of keys that will be touched.", + "JSON.OBJLEN": { + "summary": "Report the number of keys in the JSON object at path in key", + "since": "1.0.0", + "group": "module", + "complexity": "O(1) when path is evaluated to a single value, O(N) when path is evaluated to multiple values, where N is the size of the key", "acl_categories": [ - "@keyspace", "@read", - "@fast" + "@json" ], "arity": -2, "key_specs": [ @@ -17148,7 +18474,7 @@ "find_keys": { "type": "range", "spec": { - "lastkey": -1, + "lastkey": 0, "keystep": 1, "limit": 0 } @@ -17161,83 +18487,31 @@ "name": "key", "type": "key", "display_text": "key", - "key_spec_index": 0, - "multiple": true + "key_spec_index": 0 + }, + { + "name": "path", + "type": "string", + "display_text": "path", + "optional": true } ], "command_flags": [ "readonly", - "fast" + "module" ], - "hints": [ - "request_policy:multi_shard", - "response_policy:agg_sum" - ] + "module": "ReJSON" }, - "TRIMSLOTS": { - "summary": "Trim the keys that belong to specified slots.", - "since": "8.4.0", - "group": "server", - "complexity": "O(N) where N is the total number of keys in all databases", + "JSON.RESP": { + "summary": "Return the JSON in key in Redis serialization protocol specification form", + "since": "1.0.0", + "group": "module", + "complexity": "O(N) when path is evaluated to a single value, where N is the size of the value, O(N) when path is evaluated to multiple values, where N is the size of the key", "acl_categories": [ - "@keyspace", - "@write", - "@slow", - "@dangerous" - ], - "arity": -5, - "arguments": [ - { - "name": "ranges", - "type": "block", - "token": "RANGES", - "arguments": [ - { - "name": "numranges", - "type": "integer", - "display_text": "numranges" - }, - { - "name": "slots", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "startslot", - "type": "integer", - "display_text": "startslot" - }, - { - "name": "endslot", - "type": "integer", - "display_text": "endslot" - } - ] - } - ] - } - ], - "command_flags": [ - "write" - ] - }, - "TTL": { - "summary": "Returns the expiration time in seconds of a key.", - "since": "1.0.0", - "group": "generic", - "complexity": "O(1)", - "history": [ - [ - "2.8.0", - "Added the -2 reply." - ] - ], - "acl_categories": [ - "@keyspace", "@read", - "@fast" + "@json" ], - "arity": 2, + "arity": -2, "key_specs": [ { "begin_search": { @@ -17254,8 +18528,7 @@ "limit": 0 } }, - "RO": true, - "access": true + "RO": true } ], "arguments": [ @@ -17264,27 +18537,30 @@ "type": "key", "display_text": "key", "key_spec_index": 0 + }, + { + "name": "path", + "type": "string", + "display_text": "path", + "optional": true } ], "command_flags": [ "readonly", - "fast" + "module" ], - "hints": [ - "nondeterministic_output" - ] + "module": "ReJSON" }, - "TYPE": { - "summary": "Determines the type of value stored at a key.", + "JSON.SET": { + "summary": "Set the JSON value at path in key", "since": "1.0.0", - "group": "generic", - "complexity": "O(1)", + "group": "module", + "complexity": "O(M+N) where M is the size of the original value (if it exists) and N is the size of the new value", "acl_categories": [ - "@keyspace", - "@read", - "@fast" + "@write", + "@json" ], - "arity": 2, + "arity": -4, "key_specs": [ { "begin_search": { @@ -17301,7 +18577,7 @@ "limit": 0 } }, - "RO": true + "RW": true } ], "arguments": [ @@ -17310,24 +18586,124 @@ "type": "key", "display_text": "key", "key_spec_index": 0 + }, + { + "name": "path", + "type": "string", + "display_text": "path" + }, + { + "name": "json", + "type": "string", + "display_text": "json" + }, + { + "name": "condition", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "nx", + "type": "pure-token", + "display_text": "nx", + "token": "NX" + }, + { + "name": "xx", + "type": "pure-token", + "display_text": "xx", + "token": "XX" + } + ] + }, + { + "name": "fpha", + "type": "block", + "token": "FPHA", + "optional": true, + "arguments": [ + { + "name": "fpha-type", + "type": "oneof", + "arguments": [ + { + "name": "BF16", + "type": "pure-token", + "display_text": "BF16", + "token": "BF16" + }, + { + "name": "FP16", + "type": "pure-token", + "display_text": "FP16", + "token": "FP16" + }, + { + "name": "FP32", + "type": "pure-token", + "display_text": "FP32", + "token": "FP32" + }, + { + "name": "FP64", + "type": "pure-token", + "display_text": "FP64", + "token": "FP64" + } + ] + } + ] + }, + { + "name": "format", + "type": "block", + "token": "FORMAT", + "optional": true, + "arguments": [ + { + "name": "format-token", + "type": "oneof", + "arguments": [ + { + "name": "STRING", + "type": "pure-token", + "display_text": "STRING", + "token": "STRING" + }, + { + "name": "JSON", + "type": "pure-token", + "display_text": "JSON", + "token": "JSON" + }, + { + "name": "BSON", + "type": "pure-token", + "display_text": "BSON", + "token": "BSON" + } + ] + } + ] } ], "command_flags": [ - "readonly", - "fast" - ] + "write", + "denyoom", + "module" + ], + "module": "ReJSON" }, - "UNLINK": { - "summary": "Asynchronously deletes one or more keys.", - "since": "4.0.0", - "group": "generic", - "complexity": "O(1) for each key removed regardless of its size. Then the command does O(N) work in a different thread in order to reclaim memory, where N is the number of allocations the deleted objects where composed of.", + "JSON.STRAPPEND": { + "summary": "Append the json-string values to the string at path", + "since": "1.0.0", + "group": "module", + "complexity": "O(1) when path is evaluated to a single value, O(N) when path is evaluated to multiple values, where N is the size of the key", "acl_categories": [ - "@keyspace", "@write", - "@fast" + "@json" ], - "arity": -2, + "arity": -3, "key_specs": [ { "begin_search": { @@ -17339,13 +18715,12 @@ "find_keys": { "type": "range", "spec": { - "lastkey": -1, + "lastkey": 0, "keystep": 1, "limit": 0 } }, - "RM": true, - "delete": true + "RW": true } ], "arguments": [ @@ -17353,68 +18728,37 @@ "name": "key", "type": "key", "display_text": "key", - "key_spec_index": 0, - "multiple": true - } - ], - "command_flags": [ - "write", - "fast" - ], - "hints": [ - "request_policy:multi_shard", - "response_policy:agg_sum" - ] - }, - "UNSUBSCRIBE": { - "summary": "Stops listening to messages posted to channels.", - "since": "2.0.0", - "group": "pubsub", - "complexity": "O(N) where N is the number of channels to unsubscribe.", - "acl_categories": [ - "@pubsub", - "@slow" - ], - "arity": -1, - "arguments": [ + "key_spec_index": 0 + }, { - "name": "channel", + "name": "path", "type": "string", - "display_text": "channel", - "optional": true, - "multiple": true + "display_text": "path", + "optional": true + }, + { + "name": "json-string", + "type": "string", + "display_text": "json-string" } ], "command_flags": [ - "pubsub", - "noscript", - "loading", - "stale" - ] - }, - "UNWATCH": { - "summary": "Forgets about watched keys of a transaction.", - "since": "2.2.0", - "group": "transactions", - "complexity": "O(1)", - "acl_categories": [ - "@fast", - "@transaction" + "write", + "denyoom", + "module" ], - "arity": 1, - "command_flags": [ - "noscript", - "loading", - "stale", - "fast", - "allow_busy" - ] + "module": "ReJSON" }, - "VADD": { - "summary": "Add one or more elements to a vector set, or update its vector if it already exists", - "since": "8.0.0", + "JSON.STRLEN": { + "summary": "Report the length of the JSON String at path in key", + "since": "1.0.0", "group": "module", - "arity": -5, + "complexity": "O(1) when path is evaluated to a single value, O(N) when path is evaluated to multiple values, where N is the size of the key", + "acl_categories": [ + "@read", + "@json" + ], + "arity": -2, "key_specs": [ { "begin_search": { @@ -17431,9 +18775,7 @@ "limit": 0 } }, - "RW": true, - "access": true, - "update": true + "RO": true } ], "arguments": [ @@ -17444,153 +18786,28 @@ "key_spec_index": 0 }, { - "name": "reduce", - "type": "block", - "token": "REDUCE", - "optional": true, - "arguments": [ - { - "name": "dim", - "type": "integer", - "display_text": "dim" - } - ] - }, - { - "name": "format", - "type": "oneof", - "arguments": [ - { - "name": "fp32", - "type": "pure-token", - "display_text": "fp32", - "token": "FP32" - }, - { - "name": "values", - "type": "pure-token", - "display_text": "values", - "token": "VALUES" - } - ] - }, - { - "name": "vector", - "type": "string", - "display_text": "vector" - }, - { - "name": "element", - "type": "string", - "display_text": "element" - }, - { - "name": "cas", - "type": "pure-token", - "display_text": "cas", - "token": "CAS", - "optional": true - }, - { - "name": "quant_type", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "noquant", - "type": "pure-token", - "display_text": "noquant", - "token": "NOQUANT" - }, - { - "name": "bin", - "type": "pure-token", - "display_text": "bin", - "token": "BIN" - }, - { - "name": "q8", - "type": "pure-token", - "display_text": "q8", - "token": "Q8" - } - ] - }, - { - "name": "build-exploration-factor", - "type": "integer", - "display_text": "build-exploration-factor", - "token": "EF", - "optional": true - }, - { - "name": "attributes", + "name": "path", "type": "string", - "display_text": "attributes", - "token": "SETATTR", - "optional": true - }, - { - "name": "numlinks", - "type": "integer", - "display_text": "numlinks", - "token": "M", + "display_text": "path", "optional": true } ], "command_flags": [ - "write", - "denyoom", + "readonly", "module" ], - "module": "vectorset" + "module": "ReJSON" }, - "VCARD": { - "summary": "Return the number of elements in a vector set", - "since": "8.0.0", + "JSON.TOGGLE": { + "summary": "Toggle the boolean value stored at path", + "since": "2.0.0", "group": "module", - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - } - ], - "command_flags": [ - "readonly", - "module", - "fast" + "complexity": "O(1) when path is evaluated to a single value, O(N) when path is evaluated to multiple values, where N is the size of the key", + "acl_categories": [ + "@write", + "@json" ], - "module": "vectorset" - }, - "VDIM": { - "summary": "Return the dimension of vectors in the vector set", - "since": "8.0.0", - "group": "module", - "arity": 2, + "arity": 3, "key_specs": [ { "begin_search": { @@ -17607,9 +18824,7 @@ "limit": 0 } }, - "RW": true, - "access": true, - "update": true + "RW": true } ], "arguments": [ @@ -17618,20 +18833,29 @@ "type": "key", "display_text": "key", "key_spec_index": 0 + }, + { + "name": "path", + "type": "string", + "display_text": "path" } ], "command_flags": [ - "readonly", - "module", - "fast" + "write", + "module" ], - "module": "vectorset" + "module": "ReJSON" }, - "VEMB": { - "summary": "Return the vector associated with an element", - "since": "8.0.0", + "JSON.TYPE": { + "summary": "Report the type of JSON value at path", + "since": "1.0.0", "group": "module", - "arity": -3, + "complexity": "O(1) when path is evaluated to a single value, O(N) when path is evaluated to multiple values, where N is the size of the key", + "acl_categories": [ + "@read", + "@json" + ], + "arity": -2, "key_specs": [ { "begin_search": { @@ -17648,9 +18872,7 @@ "limit": 0 } }, - "RW": true, - "access": true, - "update": true + "RO": true } ], "arguments": [ @@ -17661,161 +18883,268 @@ "key_spec_index": 0 }, { - "name": "element", + "name": "path", "type": "string", - "display_text": "element" - }, - { - "name": "raw", - "type": "pure-token", - "display_text": "raw", - "token": "RAW", + "display_text": "path", "optional": true } ], "command_flags": [ "readonly", - "module", - "fast" + "module" ], - "module": "vectorset" + "module": "ReJSON" }, - "VGETATTR": { - "summary": "Retrieve the JSON attributes of elements", - "since": "8.0.0", - "group": "module", - "arity": 3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true - } + "KEYS": { + "summary": "Returns all key names that match a pattern.", + "since": "1.0.0", + "group": "generic", + "complexity": "O(N) with N being the number of keys in the database, under the assumption that the key names in the database and the given pattern have limited length.", + "acl_categories": [ + "@keyspace", + "@read", + "@slow", + "@dangerous" ], + "arity": 2, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "element", - "type": "string", - "display_text": "element" + "name": "pattern", + "type": "pattern", + "display_text": "pattern" } ], "command_flags": [ - "readonly", - "module", + "readonly" + ], + "hints": [ + "request_policy:all_shards", + "nondeterministic_output_order" + ] + }, + "LASTSAVE": { + "summary": "Returns the Unix timestamp of the last successful save to disk.", + "since": "1.0.0", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@admin", + "@fast", + "@dangerous" + ], + "arity": 1, + "command_flags": [ + "loading", + "stale", "fast" ], - "module": "vectorset" + "hints": [ + "nondeterministic_output" + ] }, - "VINFO": { - "summary": "Return information about a vector set", - "since": "8.0.0", - "group": "module", - "arity": 2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true + "LATENCY": { + "summary": "A container for latency diagnostics commands.", + "since": "2.8.13", + "group": "server", + "complexity": "Depends on subcommand.", + "acl_categories": [ + "@slow" + ], + "arity": -2 + }, + "LATENCY DOCTOR": { + "summary": "Returns a human-readable latency analysis report.", + "since": "2.8.13", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" + ], + "arity": 2, + "command_flags": [ + "admin", + "noscript", + "loading", + "stale" + ], + "hints": [ + "nondeterministic_output", + "request_policy:all_nodes", + "response_policy:special" + ] + }, + "LATENCY GRAPH": { + "summary": "Returns a latency graph for an event.", + "since": "2.8.13", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" + ], + "arity": 3, + "arguments": [ + { + "name": "event", + "type": "string", + "display_text": "event" } ], + "command_flags": [ + "admin", + "noscript", + "loading", + "stale" + ], + "hints": [ + "nondeterministic_output", + "request_policy:all_nodes", + "response_policy:special" + ] + }, + "LATENCY HELP": { + "summary": "Returns helpful text about the different subcommands.", + "since": "2.8.13", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@slow" + ], + "arity": 2, + "command_flags": [ + "loading", + "stale" + ] + }, + "LATENCY HISTOGRAM": { + "summary": "Returns the cumulative distribution of latencies of a subset or all commands.", + "since": "7.0.0", + "group": "server", + "complexity": "O(N) where N is the number of commands with latency information being retrieved.", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" + ], + "arity": -2, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "command", + "type": "string", + "display_text": "command", + "optional": true, + "multiple": true } ], "command_flags": [ - "readonly", - "module", - "fast" + "admin", + "noscript", + "loading", + "stale" ], - "module": "vectorset" + "hints": [ + "nondeterministic_output", + "request_policy:all_nodes", + "response_policy:special" + ] }, - "VISMEMBER": { - "summary": "Check if an element exists in a vector set", - "since": "8.2.0", - "group": "module", + "LATENCY HISTORY": { + "summary": "Returns timestamp-latency samples for an event.", + "since": "2.8.13", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" + ], "arity": 3, - "key_specs": [ + "arguments": [ { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "update": true + "name": "event", + "type": "string", + "display_text": "event" } ], + "command_flags": [ + "admin", + "noscript", + "loading", + "stale" + ], + "hints": [ + "nondeterministic_output", + "request_policy:all_nodes", + "response_policy:special" + ] + }, + "LATENCY LATEST": { + "summary": "Returns the latest latency samples for all events.", + "since": "2.8.13", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" + ], + "arity": 2, + "command_flags": [ + "admin", + "noscript", + "loading", + "stale" + ], + "hints": [ + "nondeterministic_output", + "request_policy:all_nodes", + "response_policy:special" + ] + }, + "LATENCY RESET": { + "summary": "Resets the latency data for one or more events.", + "since": "2.8.13", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" + ], + "arity": -2, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "element", + "name": "event", "type": "string", - "display_text": "element" + "display_text": "event", + "optional": true, + "multiple": true } ], "command_flags": [ - "readonly", - "module" + "admin", + "noscript", + "loading", + "stale" ], - "module": "vectorset" + "hints": [ + "request_policy:all_nodes", + "response_policy:agg_sum" + ] }, - "VLINKS": { - "summary": "Return the neighbors of an element at each layer in the HNSW graph", - "since": "8.0.0", - "group": "module", + "LCS": { + "summary": "Finds the longest common substring.", + "since": "7.0.0", + "group": "string", + "complexity": "O(N*M) where N and M are the lengths of s1 and s2, respectively", + "acl_categories": [ + "@read", + "@string", + "@slow" + ], "arity": -3, "key_specs": [ { @@ -17828,48 +19157,72 @@ "find_keys": { "type": "range", "spec": { - "lastkey": 0, + "lastkey": 1, "keystep": 1, "limit": 0 } }, - "RW": true, - "access": true, - "update": true + "RO": true, + "access": true } ], "arguments": [ { - "name": "key", + "name": "key1", "type": "key", - "display_text": "key", + "display_text": "key1", "key_spec_index": 0 }, { - "name": "element", - "type": "string", - "display_text": "element" + "name": "key2", + "type": "key", + "display_text": "key2", + "key_spec_index": 0 }, { - "name": "withscores", + "name": "len", "type": "pure-token", - "display_text": "withscores", - "token": "WITHSCORES", + "display_text": "len", + "token": "LEN", + "optional": true + }, + { + "name": "idx", + "type": "pure-token", + "display_text": "idx", + "token": "IDX", + "optional": true + }, + { + "name": "min-match-len", + "type": "integer", + "display_text": "min-match-len", + "token": "MINMATCHLEN", + "optional": true + }, + { + "name": "withmatchlen", + "type": "pure-token", + "display_text": "withmatchlen", + "token": "WITHMATCHLEN", "optional": true } ], "command_flags": [ - "readonly", - "module", - "fast" - ], - "module": "vectorset" + "readonly" + ] }, - "VRANDMEMBER": { - "summary": "Return one or multiple random members from a vector set", - "since": "8.0.0", - "group": "module", - "arity": -2, + "LINDEX": { + "summary": "Returns an element from a list by its index.", + "since": "1.0.0", + "group": "list", + "complexity": "O(N) where N is the number of elements to traverse to get to the element at index. This makes asking for the first or the last element of the list O(1).", + "acl_categories": [ + "@read", + "@list", + "@slow" + ], + "arity": 3, "key_specs": [ { "begin_search": { @@ -17886,9 +19239,8 @@ "limit": 0 } }, - "RW": true, - "access": true, - "update": true + "RO": true, + "access": true } ], "arguments": [ @@ -17899,23 +19251,26 @@ "key_spec_index": 0 }, { - "name": "count", + "name": "index", "type": "integer", - "display_text": "count", - "optional": true + "display_text": "index" } ], "command_flags": [ - "readonly", - "module" - ], - "module": "vectorset" + "readonly" + ] }, - "VRANGE": { - "summary": "Return vector set elements in a lex range", - "since": "8.4.0", - "group": "module", - "arity": -4, + "LINSERT": { + "summary": "Inserts an element before or after another element in a list.", + "since": "2.2.0", + "group": "list", + "complexity": "O(N) where N is the number of elements to traverse before seeing the value pivot. This means that inserting somewhere on the left end on the list (head) can be considered O(1) and inserting somewhere on the right end (tail) is O(N).", + "acl_categories": [ + "@write", + "@list", + "@slow" + ], + "arity": 5, "key_specs": [ { "begin_search": { @@ -17933,8 +19288,7 @@ } }, "RW": true, - "access": true, - "update": true + "insert": true } ], "arguments": [ @@ -17945,33 +19299,50 @@ "key_spec_index": 0 }, { - "name": "start", - "type": "string", - "display_text": "start" + "name": "where", + "type": "oneof", + "arguments": [ + { + "name": "before", + "type": "pure-token", + "display_text": "before", + "token": "BEFORE" + }, + { + "name": "after", + "type": "pure-token", + "display_text": "after", + "token": "AFTER" + } + ] }, { - "name": "end", + "name": "pivot", "type": "string", - "display_text": "end" + "display_text": "pivot" }, { - "name": "count", - "type": "integer", - "display_text": "count", - "optional": true + "name": "element", + "type": "string", + "display_text": "element" } ], "command_flags": [ - "readonly", - "module" - ], - "module": "vectorset" + "write", + "denyoom" + ] }, - "VREM": { - "summary": "Remove an element from a vector set", - "since": "8.0.0", - "group": "module", - "arity": 3, + "LLEN": { + "summary": "Returns the length of a list.", + "since": "1.0.0", + "group": "list", + "complexity": "O(1)", + "acl_categories": [ + "@read", + "@list", + "@fast" + ], + "arity": 2, "key_specs": [ { "begin_search": { @@ -17988,9 +19359,7 @@ "limit": 0 } }, - "RW": true, - "access": true, - "update": true + "RO": true } ], "arguments": [ @@ -17999,24 +19368,24 @@ "type": "key", "display_text": "key", "key_spec_index": 0 - }, - { - "name": "element", - "type": "string", - "display_text": "element" } ], "command_flags": [ - "write", - "module" - ], - "module": "vectorset" + "readonly", + "fast" + ] }, - "VSETATTR": { - "summary": "Associate or remove the JSON attributes of elements", - "since": "8.0.0", - "group": "module", - "arity": 4, + "LMOVE": { + "summary": "Returns an element after popping it from one list and pushing it to another. Deletes the list if the last element was moved.", + "since": "6.2.0", + "group": "list", + "complexity": "O(1)", + "acl_categories": [ + "@write", + "@list", + "@slow" + ], + "arity": 5, "key_specs": [ { "begin_search": { @@ -18035,45 +19404,13 @@ }, "RW": true, "access": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "element", - "type": "string", - "display_text": "element" + "delete": true }, - { - "name": "json", - "type": "string", - "display_text": "json" - } - ], - "command_flags": [ - "write", - "module", - "fast" - ], - "module": "vectorset" - }, - "VSIM": { - "summary": "Return elements by vector similarity", - "since": "8.0.0", - "group": "module", - "arity": -4, - "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 1 + "index": 2 } }, "find_keys": { @@ -18085,240 +19422,75 @@ } }, "RW": true, - "access": true, - "update": true + "insert": true } ], "arguments": [ { - "name": "key", + "name": "source", "type": "key", - "display_text": "key", + "display_text": "source", "key_spec_index": 0 }, { - "name": "format", + "name": "destination", + "type": "key", + "display_text": "destination", + "key_spec_index": 1 + }, + { + "name": "wherefrom", "type": "oneof", "arguments": [ { - "name": "ele", - "type": "pure-token", - "display_text": "ele", - "token": "ELE" - }, - { - "name": "fp32", + "name": "left", "type": "pure-token", - "display_text": "fp32", - "token": "FP32" + "display_text": "left", + "token": "LEFT" }, { - "name": "values", + "name": "right", "type": "pure-token", - "display_text": "values", - "token": "VALUES" + "display_text": "right", + "token": "RIGHT" } ] }, { - "name": "vector_or_element", - "type": "string", - "display_text": "vector_or_element" - }, - { - "name": "withscores", - "type": "pure-token", - "display_text": "withscores", - "token": "WITHSCORES", - "optional": true - }, - { - "name": "withattribs", - "type": "pure-token", - "display_text": "withattribs", - "token": "WITHATTRIBS", - "optional": true - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true - }, - { - "name": "max_distance", - "type": "double", - "display_text": "max_distance", - "token": "EPSILON", - "optional": true - }, - { - "name": "search-exploration-factor", - "type": "integer", - "display_text": "search-exploration-factor", - "token": "EF", - "optional": true - }, - { - "name": "expression", - "type": "string", - "display_text": "expression", - "token": "FILTER", - "optional": true - }, - { - "name": "max-filtering-effort", - "type": "integer", - "display_text": "max-filtering-effort", - "token": "FILTER-EF", - "optional": true - }, - { - "name": "truth", - "type": "pure-token", - "display_text": "truth", - "token": "TRUTH", - "optional": true - }, - { - "name": "nothread", - "type": "pure-token", - "display_text": "nothread", - "token": "NOTHREAD", - "optional": true - } - ], - "command_flags": [ - "readonly", - "module" - ], - "module": "vectorset" - }, - "WAIT": { - "summary": "Blocks until the asynchronous replication of all preceding write commands sent by the connection is completed.", - "since": "3.0.0", - "group": "generic", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@blocking", - "@connection" - ], - "arity": 3, - "arguments": [ - { - "name": "numreplicas", - "type": "integer", - "display_text": "numreplicas" - }, - { - "name": "timeout", - "type": "integer", - "display_text": "timeout" - } - ], - "command_flags": [ - "blocking" - ], - "hints": [ - "request_policy:all_shards", - "response_policy:agg_min" - ] - }, - "WAITAOF": { - "summary": "Blocks until all of the preceding write commands sent by the connection are written to the append-only file of the master and/or replicas.", - "since": "7.2.0", - "group": "generic", - "complexity": "O(1)", - "acl_categories": [ - "@slow", - "@blocking", - "@connection" - ], - "arity": 4, - "arguments": [ - { - "name": "numlocal", - "type": "integer", - "display_text": "numlocal" - }, - { - "name": "numreplicas", - "type": "integer", - "display_text": "numreplicas" - }, - { - "name": "timeout", - "type": "integer", - "display_text": "timeout" - } - ], - "command_flags": [ - "blocking" - ], - "hints": [ - "request_policy:all_shards", - "response_policy:agg_min" - ] - }, - "WATCH": { - "summary": "Monitors changes to keys to determine the execution of a transaction.", - "since": "2.2.0", - "group": "transactions", - "complexity": "O(1) for every key.", - "acl_categories": [ - "@fast", - "@transaction" - ], - "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": -1, - "keystep": 1, - "limit": 0 + "name": "whereto", + "type": "oneof", + "arguments": [ + { + "name": "left", + "type": "pure-token", + "display_text": "left", + "token": "LEFT" + }, + { + "name": "right", + "type": "pure-token", + "display_text": "right", + "token": "RIGHT" } - }, - "RO": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true + ] } ], "command_flags": [ - "noscript", - "loading", - "stale", - "fast", - "allow_busy" + "write", + "denyoom" ] }, - "XACK": { - "summary": "Returns the number of messages that were successfully acknowledged by the consumer group member of a stream.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(1) for each message ID processed.", + "LMOVEM": { + "summary": "Moves up to (or exactly) a number of elements from one list to another and returns them. Deletes the source list if it becomes empty.", + "since": "8.10.0", + "group": "list", + "complexity": "O(N) where N is the number of elements moved.", "acl_categories": [ "@write", - "@stream", - "@fast" + "@list", + "@slow" ], - "arity": -4, + "arity": -5, "key_specs": [ { "begin_search": { @@ -18336,50 +19508,14 @@ } }, "RW": true, - "update": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "group", - "type": "string", - "display_text": "group" + "access": true, + "delete": true }, - { - "name": "id", - "type": "string", - "display_text": "id", - "multiple": true - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "XACKDEL": { - "summary": "Acknowledges and deletes one or multiple messages for a stream consumer group.", - "since": "8.2.0", - "group": "stream", - "complexity": "O(1) for each message ID processed.", - "acl_categories": [ - "@write", - "@stream", - "@fast" - ], - "arity": -6, - "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 1 + "index": 2 } }, "find_keys": { @@ -18391,99 +19527,225 @@ } }, "RW": true, - "update": true, - "delete": true + "insert": true } ], "arguments": [ { - "name": "key", + "name": "source", "type": "key", - "display_text": "key", + "display_text": "source", "key_spec_index": 0 }, { - "name": "group", - "type": "string", - "display_text": "group" + "name": "destination", + "type": "key", + "display_text": "destination", + "key_spec_index": 1 }, { - "name": "condition", + "name": "wherefrom", "type": "oneof", - "optional": true, "arguments": [ { - "name": "keepref", + "name": "left", "type": "pure-token", - "display_text": "keepref", - "token": "KEEPREF" + "display_text": "left", + "token": "LEFT" }, { - "name": "delref", + "name": "right", "type": "pure-token", - "display_text": "delref", - "token": "DELREF" + "display_text": "right", + "token": "RIGHT" + } + ] + }, + { + "name": "whereto", + "type": "oneof", + "arguments": [ + { + "name": "left", + "type": "pure-token", + "display_text": "left", + "token": "LEFT" }, { - "name": "acked", + "name": "right", "type": "pure-token", - "display_text": "acked", - "token": "ACKED" + "display_text": "right", + "token": "RIGHT" } ] }, { - "name": "ids", + "name": "how-many", "type": "block", - "token": "IDS", + "optional": true, "arguments": [ { - "name": "numids", - "type": "integer", - "display_text": "numids" + "name": "selector", + "type": "oneof", + "arguments": [ + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "COUNT" + }, + { + "name": "exactly", + "type": "integer", + "display_text": "exactly", + "token": "EXACTLY" + } + ] }, { - "name": "id", - "type": "string", - "display_text": "id", - "multiple": true + "name": "ordering", + "type": "oneof", + "arguments": [ + { + "name": "obo", + "type": "pure-token", + "display_text": "obo", + "token": "OBO" + }, + { + "name": "bulk", + "type": "pure-token", + "display_text": "bulk", + "token": "BULK" + } + ] } ] } ], "command_flags": [ "write", - "fast" + "denyoom" ] }, - "XADD": { - "summary": "Appends a new message to a stream. Creates the key if it doesn't exist.", + "LMPOP": { + "summary": "Returns multiple elements from a list after removing them. Deletes the list if the last element was popped.", + "since": "7.0.0", + "group": "list", + "complexity": "O(N+M) where N is the number of provided keys and M is the number of elements returned.", + "acl_categories": [ + "@write", + "@list", + "@slow" + ], + "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "keynum", + "spec": { + "keynumidx": 0, + "firstkey": 1, + "keystep": 1 + } + }, + "RW": true, + "access": true, + "delete": true + } + ], + "arguments": [ + { + "name": "numkeys", + "type": "integer", + "display_text": "numkeys" + }, + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "multiple": true + }, + { + "name": "where", + "type": "oneof", + "arguments": [ + { + "name": "left", + "type": "pure-token", + "display_text": "left", + "token": "LEFT" + }, + { + "name": "right", + "type": "pure-token", + "display_text": "right", + "token": "RIGHT" + } + ] + }, + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "COUNT", + "optional": true + } + ], + "command_flags": [ + "write", + "movablekeys" + ] + }, + "LOLWUT": { + "summary": "Displays computer art and the Redis version", "since": "5.0.0", - "group": "stream", - "complexity": "O(1) when adding a new entry, O(N) when trimming where N being the number of entries evicted.", + "group": "server", + "acl_categories": [ + "@read", + "@fast" + ], + "arity": -1, + "arguments": [ + { + "name": "version", + "type": "integer", + "display_text": "version", + "token": "VERSION", + "optional": true + } + ], + "command_flags": [ + "readonly", + "fast" + ] + }, + "LPOP": { + "summary": "Returns the first elements in a list after removing it. Deletes the list if the last element was popped.", + "since": "1.0.0", + "group": "list", + "complexity": "O(N) where N is the number of elements returned", "history": [ [ "6.2.0", - "Added the `NOMKSTREAM` option, `MINID` trimming strategy and the `LIMIT` option." - ], - [ - "7.0.0", - "Added support for the `-*` explicit ID form." - ], - [ - "8.2.0", - "Added the `KEEPREF`, `DELREF` and `ACKED` options." + "Added the `count` argument." ] ], "acl_categories": [ "@write", - "@stream", + "@list", "@fast" ], - "arity": -5, + "arity": -2, "key_specs": [ { - "notes": "UPDATE instead of INSERT because of the optional trimming feature", "begin_search": { "type": "index", "spec": { @@ -18499,7 +19761,8 @@ } }, "RW": true, - "update": true + "access": true, + "delete": true } ], "arguments": [ @@ -18510,188 +19773,104 @@ "key_spec_index": 0 }, { - "name": "nomkstream", - "type": "pure-token", - "display_text": "nomkstream", - "token": "NOMKSTREAM", + "name": "count", + "type": "integer", + "display_text": "count", "since": "6.2.0", "optional": true - }, + } + ], + "command_flags": [ + "write", + "fast" + ] + }, + "LPOS": { + "summary": "Returns the index of matching elements in a list.", + "since": "6.0.6", + "group": "list", + "complexity": "O(N) where N is the number of elements in the list, for the average case. When searching for elements near the head or the tail of the list, or when the MAXLEN option is provided, the command may run in constant time.", + "acl_categories": [ + "@read", + "@list", + "@slow" + ], + "arity": -3, + "key_specs": [ { - "name": "condition", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "keepref", - "type": "pure-token", - "display_text": "keepref", - "token": "KEEPREF" - }, - { - "name": "delref", - "type": "pure-token", - "display_text": "delref", - "token": "DELREF" - }, - { - "name": "acked", - "type": "pure-token", - "display_text": "acked", - "token": "ACKED" + "begin_search": { + "type": "index", + "spec": { + "index": 1 } - ] - }, + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ { - "name": "idmp", - "type": "oneof", - "since": "8.6.0", - "optional": true, - "arguments": [ - { - "name": "pid", - "type": "string", - "display_text": "pid", - "token": "IDMPAUTO" - }, - { - "name": "idmp", - "type": "block", - "token": "IDMP", - "arguments": [ - { - "name": "pid", - "type": "string", - "display_text": "pid" - }, - { - "name": "iid", - "type": "string", - "display_text": "iid" - } - ] - } - ] + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 }, { - "name": "trim", - "type": "block", - "optional": true, - "arguments": [ - { - "name": "strategy", - "type": "oneof", - "arguments": [ - { - "name": "maxlen", - "type": "pure-token", - "display_text": "maxlen", - "token": "MAXLEN" - }, - { - "name": "minid", - "type": "pure-token", - "display_text": "minid", - "token": "MINID", - "since": "6.2.0" - } - ] - }, - { - "name": "operator", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "equal", - "type": "pure-token", - "display_text": "equal", - "token": "=" - }, - { - "name": "approximately", - "type": "pure-token", - "display_text": "approximately", - "token": "~" - } - ] - }, - { - "name": "threshold", - "type": "string", - "display_text": "threshold" - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "LIMIT", - "since": "6.2.0", - "optional": true - } - ] + "name": "element", + "type": "string", + "display_text": "element" }, { - "name": "id-selector", - "type": "oneof", - "arguments": [ - { - "name": "auto-id", - "type": "pure-token", - "display_text": "auto-id", - "token": "*" - }, - { - "name": "id", - "type": "string", - "display_text": "id" - } - ] + "name": "rank", + "type": "integer", + "display_text": "rank", + "token": "RANK", + "optional": true }, { - "name": "data", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "field", - "type": "string", - "display_text": "field" - }, - { - "name": "value", - "type": "string", - "display_text": "value" - } - ] + "name": "num-matches", + "type": "integer", + "display_text": "num-matches", + "token": "COUNT", + "optional": true + }, + { + "name": "len", + "type": "integer", + "display_text": "len", + "token": "MAXLEN", + "optional": true } ], "command_flags": [ - "write", - "denyoom", - "fast" - ], - "hints": [ - "nondeterministic_output" + "readonly" ] }, - "XAUTOCLAIM": { - "summary": "Changes, or acquires, ownership of messages in a consumer group, as if the messages were delivered to as consumer group member.", - "since": "6.2.0", - "group": "stream", - "complexity": "O(1) if COUNT is small.", + "LPUSH": { + "summary": "Prepends one or more elements to a list. Creates the key if it doesn't exist.", + "since": "1.0.0", + "group": "list", + "complexity": "O(1) for each element added, so O(N) to add N elements when the command is called with multiple arguments.", "history": [ [ - "7.0.0", - "Added an element to the reply array, containing deleted entries the command cleared from the PEL" + "2.4.0", + "Accepts multiple `element` arguments." ] ], "acl_categories": [ "@write", - "@stream", + "@list", "@fast" ], - "arity": -6, + "arity": -3, "key_specs": [ { "begin_search": { @@ -18709,7 +19888,7 @@ } }, "RW": true, - "delete": true + "insert": true } ], "arguments": [ @@ -18720,59 +19899,35 @@ "key_spec_index": 0 }, { - "name": "group", - "type": "string", - "display_text": "group" - }, - { - "name": "consumer", - "type": "string", - "display_text": "consumer" - }, - { - "name": "min-idle-time", - "type": "string", - "display_text": "min-idle-time" - }, - { - "name": "start", + "name": "element", "type": "string", - "display_text": "start" - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true - }, - { - "name": "justid", - "type": "pure-token", - "display_text": "justid", - "token": "JUSTID", - "optional": true + "display_text": "element", + "multiple": true } ], "command_flags": [ "write", + "denyoom", "fast" - ], - "hints": [ - "nondeterministic_output" ] }, - "XCFGSET": { - "summary": "Sets the IDMP configuration parameters for a stream.", - "since": "8.6.0", - "group": "stream", - "complexity": "O(1)", + "LPUSHX": { + "summary": "Prepends one or more elements to a list only when the list exists.", + "since": "2.2.0", + "group": "list", + "complexity": "O(1) for each element added, so O(N) to add N elements when the command is called with multiple arguments.", + "history": [ + [ + "4.0.0", + "Accepts multiple `element` arguments." + ] + ], "acl_categories": [ "@write", - "@stream", + "@list", "@fast" ], - "arity": -2, + "arity": -3, "key_specs": [ { "begin_search": { @@ -18790,7 +19945,7 @@ } }, "RW": true, - "update": true + "insert": true } ], "arguments": [ @@ -18801,36 +19956,29 @@ "key_spec_index": 0 }, { - "name": "idmp-duration", - "type": "integer", - "display_text": "idmp-duration", - "token": "IDMP-DURATION", - "optional": true - }, - { - "name": "idmp-maxsize", - "type": "integer", - "display_text": "idmp-maxsize", - "token": "IDMP-MAXSIZE", - "optional": true + "name": "element", + "type": "string", + "display_text": "element", + "multiple": true } ], "command_flags": [ "write", + "denyoom", "fast" ] }, - "XCLAIM": { - "summary": "Changes, or acquires, ownership of a message in a consumer group, as if the message was delivered a consumer group member.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(log N) with N being the number of messages in the PEL of the consumer group.", + "LRANGE": { + "summary": "Returns a range of elements from a list.", + "since": "1.0.0", + "group": "list", + "complexity": "O(S+N) where S is the distance of start offset from HEAD for small lists, from nearest end (HEAD or TAIL) for large lists; and N is the number of elements in the specified range.", "acl_categories": [ - "@write", - "@stream", - "@fast" - ], - "arity": -6, + "@read", + "@list", + "@slow" + ], + "arity": 4, "key_specs": [ { "begin_search": { @@ -18847,8 +19995,8 @@ "limit": 0 } }, - "RW": true, - "update": true + "RO": true, + "access": true } ], "arguments": [ @@ -18859,88 +20007,31 @@ "key_spec_index": 0 }, { - "name": "group", - "type": "string", - "display_text": "group" - }, - { - "name": "consumer", - "type": "string", - "display_text": "consumer" - }, - { - "name": "min-idle-time", - "type": "string", - "display_text": "min-idle-time" - }, - { - "name": "id", - "type": "string", - "display_text": "id", - "multiple": true - }, - { - "name": "ms", + "name": "start", "type": "integer", - "display_text": "ms", - "token": "IDLE", - "optional": true - }, - { - "name": "unix-time-milliseconds", - "type": "unix-time", - "display_text": "unix-time-milliseconds", - "token": "TIME", - "optional": true + "display_text": "start" }, { - "name": "count", + "name": "stop", "type": "integer", - "display_text": "count", - "token": "RETRYCOUNT", - "optional": true - }, - { - "name": "force", - "type": "pure-token", - "display_text": "force", - "token": "FORCE", - "optional": true - }, - { - "name": "justid", - "type": "pure-token", - "display_text": "justid", - "token": "JUSTID", - "optional": true - }, - { - "name": "lastid", - "type": "string", - "display_text": "lastid", - "token": "LASTID", - "optional": true + "display_text": "stop" } ], "command_flags": [ - "write", - "fast" - ], - "hints": [ - "nondeterministic_output" + "readonly" ] }, - "XDEL": { - "summary": "Returns the number of messages after removing them from a stream.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(1) for each single item to delete in the stream, regardless of the stream size.", + "LREM": { + "summary": "Removes elements from a list. Deletes the list if the last element was removed.", + "since": "1.0.0", + "group": "list", + "complexity": "O(N+M) where N is the length of the list and M is the number of elements removed.", "acl_categories": [ "@write", - "@stream", - "@fast" + "@list", + "@slow" ], - "arity": -3, + "arity": 4, "key_specs": [ { "begin_search": { @@ -18969,28 +20060,31 @@ "key_spec_index": 0 }, { - "name": "id", + "name": "count", + "type": "integer", + "display_text": "count" + }, + { + "name": "element", "type": "string", - "display_text": "id", - "multiple": true + "display_text": "element" } ], "command_flags": [ - "write", - "fast" + "write" ] }, - "XDELEX": { - "summary": "Deletes one or multiple entries from the stream.", - "since": "8.2.0", - "group": "stream", - "complexity": "O(1) for each single item to delete in the stream, regardless of the stream size.", + "LSET": { + "summary": "Sets the value of an element in a list by its index.", + "since": "1.0.0", + "group": "list", + "complexity": "O(N) where N is the length of the list. Setting either the first or the last element of the list is O(1).", "acl_categories": [ "@write", - "@stream", - "@fast" + "@list", + "@slow" ], - "arity": -5, + "arity": 4, "key_specs": [ { "begin_search": { @@ -19008,7 +20102,7 @@ } }, "RW": true, - "delete": true + "update": true } ], "arguments": [ @@ -19019,87 +20113,38 @@ "key_spec_index": 0 }, { - "name": "condition", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "keepref", - "type": "pure-token", - "display_text": "keepref", - "token": "KEEPREF" - }, - { - "name": "delref", - "type": "pure-token", - "display_text": "delref", - "token": "DELREF" - }, - { - "name": "acked", - "type": "pure-token", - "display_text": "acked", - "token": "ACKED" - } - ] + "name": "index", + "type": "integer", + "display_text": "index" }, { - "name": "ids", - "type": "block", - "token": "IDS", - "arguments": [ - { - "name": "numids", - "type": "integer", - "display_text": "numids" - }, - { - "name": "id", - "type": "string", - "display_text": "id", - "multiple": true - } - ] + "name": "element", + "type": "string", + "display_text": "element" } ], "command_flags": [ "write", - "fast" + "denyoom" ] }, - "XGROUP": { - "summary": "A container for consumer groups commands.", - "since": "5.0.0", - "group": "stream", - "complexity": "Depends on subcommand.", - "acl_categories": [ - "@slow" - ], - "arity": -2 - }, - "XGROUP CREATE": { - "summary": "Creates a consumer group.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(1)", - "history": [ - [ - "7.0.0", - "Added the `entries_read` named argument." - ] - ], + "LTRIM": { + "summary": "Removes elements from both ends a list. Deletes the list if all elements were trimmed.", + "since": "1.0.0", + "group": "list", + "complexity": "O(N) where N is the number of elements to be removed by the operation.", "acl_categories": [ "@write", - "@stream", + "@list", "@slow" ], - "arity": -5, + "arity": 4, "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 2 + "index": 1 } }, "find_keys": { @@ -19111,7 +20156,7 @@ } }, "RW": true, - "insert": true + "delete": true } ], "arguments": [ @@ -19122,58 +20167,113 @@ "key_spec_index": 0 }, { - "name": "group", - "type": "string", - "display_text": "group" - }, - { - "name": "id-selector", - "type": "oneof", - "arguments": [ - { - "name": "id", - "type": "string", - "display_text": "id" - }, - { - "name": "new-id", - "type": "pure-token", - "display_text": "new-id", - "token": "$" - } - ] - }, - { - "name": "mkstream", - "type": "pure-token", - "display_text": "mkstream", - "token": "MKSTREAM", - "optional": true + "name": "start", + "type": "integer", + "display_text": "start" }, { - "name": "entriesread", + "name": "stop", "type": "integer", - "display_text": "entries-read", - "token": "ENTRIESREAD", - "optional": true + "display_text": "stop" } ], "command_flags": [ - "write", - "denyoom" + "write" ] }, - "XGROUP CREATECONSUMER": { - "summary": "Creates a consumer in a consumer group.", - "since": "6.2.0", - "group": "stream", - "complexity": "O(1)", + "MEMORY": { + "summary": "A container for memory diagnostics commands.", + "since": "4.0.0", + "group": "server", + "complexity": "Depends on subcommand.", "acl_categories": [ - "@write", - "@stream", "@slow" ], - "arity": 5, + "arity": -2 + }, + "MEMORY DOCTOR": { + "summary": "Outputs a memory problems report.", + "since": "4.0.0", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@slow" + ], + "arity": 2, + "hints": [ + "nondeterministic_output", + "request_policy:all_shards", + "response_policy:special" + ] + }, + "MEMORY HELP": { + "summary": "Returns helpful text about the different subcommands.", + "since": "4.0.0", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@slow" + ], + "arity": 2, + "command_flags": [ + "loading", + "stale" + ] + }, + "MEMORY MALLOC-STATS": { + "summary": "Returns the allocator statistics.", + "since": "4.0.0", + "group": "server", + "complexity": "Depends on how much memory is allocated, could be slow", + "acl_categories": [ + "@slow" + ], + "arity": 2, + "hints": [ + "nondeterministic_output", + "request_policy:all_shards", + "response_policy:special" + ] + }, + "MEMORY PURGE": { + "summary": "Asks the allocator to release memory.", + "since": "4.0.0", + "group": "server", + "complexity": "Depends on how much memory is allocated, could be slow", + "acl_categories": [ + "@slow" + ], + "arity": 2, + "hints": [ + "request_policy:all_shards", + "response_policy:all_succeeded" + ] + }, + "MEMORY STATS": { + "summary": "Returns details about memory usage.", + "since": "4.0.0", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@slow" + ], + "arity": 2, + "hints": [ + "nondeterministic_output", + "request_policy:all_shards", + "response_policy:special" + ] + }, + "MEMORY USAGE": { + "summary": "Estimates the memory usage of a key.", + "since": "4.0.0", + "group": "server", + "complexity": "O(N) where N is the number of samples.", + "acl_categories": [ + "@read", + "@slow" + ], + "arity": -3, "key_specs": [ { "begin_search": { @@ -19190,8 +20290,7 @@ "limit": 0 } }, - "RW": true, - "insert": true + "RO": true } ], "arguments": [ @@ -19202,50 +20301,46 @@ "key_spec_index": 0 }, { - "name": "group", - "type": "string", - "display_text": "group" - }, - { - "name": "consumer", - "type": "string", - "display_text": "consumer" + "name": "count", + "type": "integer", + "display_text": "count", + "token": "SAMPLES", + "optional": true } ], "command_flags": [ - "write", - "denyoom" + "readonly" ] }, - "XGROUP DELCONSUMER": { - "summary": "Deletes a consumer from a consumer group.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(1)", + "MGET": { + "summary": "Atomically returns the string values of one or more keys.", + "since": "1.0.0", + "group": "string", + "complexity": "O(N) where N is the number of keys to retrieve.", "acl_categories": [ - "@write", - "@stream", - "@slow" + "@read", + "@string", + "@fast" ], - "arity": 5, + "arity": -2, "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 2 + "index": 1 } }, "find_keys": { "type": "range", "spec": { - "lastkey": 0, + "lastkey": -1, "keystep": 1, "limit": 0 } }, - "RW": true, - "delete": true + "RO": true, + "access": true } ], "arguments": [ @@ -19253,40 +20348,54 @@ "name": "key", "type": "key", "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "group", - "type": "string", - "display_text": "group" - }, - { - "name": "consumer", - "type": "string", - "display_text": "consumer" + "key_spec_index": 0, + "multiple": true } ], "command_flags": [ - "write" + "readonly", + "fast" + ], + "hints": [ + "request_policy:multi_shard" ] }, - "XGROUP DESTROY": { - "summary": "Destroys a consumer group.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(N) where N is the number of entries in the group's pending entries list (PEL).", + "MIGRATE": { + "summary": "Atomically transfers a key from one Redis instance to another.", + "since": "2.6.0", + "group": "generic", + "complexity": "This command actually executes a DUMP+DEL in the source instance, and a RESTORE in the target instance. See the pages of these commands for time complexity. Also an O(N) data transfer between the two instances is performed.", + "history": [ + [ + "3.0.0", + "Added the `COPY` and `REPLACE` options." + ], + [ + "3.0.6", + "Added the `KEYS` option." + ], + [ + "4.0.7", + "Added the `AUTH` option." + ], + [ + "6.0.0", + "Added the `AUTH2` option." + ] + ], "acl_categories": [ + "@keyspace", "@write", - "@stream", - "@slow" + "@slow", + "@dangerous" ], - "arity": 4, + "arity": -6, "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 2 + "index": 3 } }, "find_keys": { @@ -19298,349 +20407,321 @@ } }, "RW": true, + "access": true, "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 }, - { - "name": "group", - "type": "string", - "display_text": "group" - } - ], - "command_flags": [ - "write" - ] - }, - "XGROUP HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(1)", - "acl_categories": [ - "@stream", - "@slow" - ], - "arity": 2, - "command_flags": [ - "loading", - "stale" - ] - }, - "XGROUP SETID": { - "summary": "Sets the last-delivered ID of a consumer group.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(1)", - "history": [ - [ - "7.0.0", - "Added the optional `entries_read` argument." - ] - ], - "acl_categories": [ - "@write", - "@stream", - "@slow" - ], - "arity": -5, - "key_specs": [ { "begin_search": { - "type": "index", + "type": "keyword", "spec": { - "index": 2 + "keyword": "KEYS", + "startfrom": -2 } }, "find_keys": { "type": "range", "spec": { - "lastkey": 0, + "lastkey": -1, "keystep": 1, "limit": 0 } }, "RW": true, - "update": true + "access": true, + "delete": true, + "incomplete": true } ], "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "group", + "name": "host", "type": "string", - "display_text": "group" + "display_text": "host" }, { - "name": "id-selector", + "name": "port", + "type": "integer", + "display_text": "port" + }, + { + "name": "key-selector", "type": "oneof", "arguments": [ { - "name": "id", - "type": "string", - "display_text": "id" + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 }, { - "name": "new-id", + "name": "empty-string", "type": "pure-token", - "display_text": "new-id", - "token": "$" + "display_text": "empty-string", + "token": "" } ] }, { - "name": "entriesread", + "name": "destination-db", "type": "integer", - "display_text": "entries-read", - "token": "ENTRIESREAD", - "optional": true - } - ], - "command_flags": [ - "write" - ] - }, - "XIDMPRECORD": { - "summary": "An internal command for setting IDMP metadata on an existing stream message.", - "since": "8.6.2", - "group": "stream", - "complexity": "O(1)", - "acl_categories": [ - "@write", - "@stream", - "@fast" - ], - "arity": 5, - "key_specs": [ + "display_text": "destination-db" + }, { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "update": true - } - ], - "arguments": [ + "name": "timeout", + "type": "integer", + "display_text": "timeout" + }, { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "copy", + "type": "pure-token", + "display_text": "copy", + "token": "COPY", + "since": "3.0.0", + "optional": true }, { - "name": "pid", - "type": "string", - "display_text": "pid" + "name": "replace", + "type": "pure-token", + "display_text": "replace", + "token": "REPLACE", + "since": "3.0.0", + "optional": true }, { - "name": "iid", - "type": "string", - "display_text": "iid" + "name": "authentication", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "auth", + "type": "string", + "display_text": "password", + "token": "AUTH", + "since": "4.0.7" + }, + { + "name": "auth2", + "type": "block", + "token": "AUTH2", + "since": "6.0.0", + "arguments": [ + { + "name": "username", + "type": "string", + "display_text": "username" + }, + { + "name": "password", + "type": "string", + "display_text": "password" + } + ] + } + ] }, { - "name": "stream-id", - "type": "string", - "display_text": "stream-id" + "name": "keys", + "type": "key", + "display_text": "key", + "key_spec_index": 1, + "token": "KEYS", + "since": "3.0.6", + "optional": true, + "multiple": true } ], "command_flags": [ "write", - "denyoom", - "fast" + "movablekeys" + ], + "hints": [ + "nondeterministic_output" ] }, - "XINFO": { - "summary": "A container for stream introspection commands.", - "since": "5.0.0", - "group": "stream", + "MODULE": { + "summary": "A container for module commands.", + "since": "4.0.0", + "group": "server", "complexity": "Depends on subcommand.", "acl_categories": [ "@slow" ], "arity": -2 }, - "XINFO CONSUMERS": { - "summary": "Returns a list of the consumers in a consumer group.", + "MODULE HELP": { + "summary": "Returns helpful text about the different subcommands.", "since": "5.0.0", - "group": "stream", + "group": "server", "complexity": "O(1)", - "history": [ - [ - "7.2.0", - "Added the `inactive` field, and changed the meaning of `idle`." - ] - ], "acl_categories": [ - "@read", - "@stream", "@slow" ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } + "arity": 2, + "command_flags": [ + "loading", + "stale" + ] + }, + "MODULE LIST": { + "summary": "Returns all loaded modules.", + "since": "4.0.0", + "group": "server", + "complexity": "O(N) where N is the number of loaded modules.", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" + ], + "arity": 2, + "command_flags": [ + "admin", + "noscript" + ], + "hints": [ + "nondeterministic_output_order" + ] + }, + "MODULE LOAD": { + "summary": "Loads a module.", + "since": "4.0.0", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" ], + "arity": -3, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "path", + "type": "string", + "display_text": "path" }, { - "name": "group", + "name": "arg", "type": "string", - "display_text": "group" + "display_text": "arg", + "optional": true, + "multiple": true } ], "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output" + "admin", + "noscript", + "no_async_loading" ] }, - "XINFO GROUPS": { - "summary": "Returns a list of the consumer groups of a stream.", - "since": "5.0.0", - "group": "stream", + "MODULE LOADEX": { + "summary": "Loads a module using extended parameters.", + "since": "7.0.0", + "group": "server", "complexity": "O(1)", - "history": [ - [ - "7.0.0", - "Added the `entries-read` and `lag` fields" - ] - ], "acl_categories": [ - "@read", - "@stream", - "@slow" - ], - "arity": 3, - "key_specs": [ + "@admin", + "@slow", + "@dangerous" + ], + "arity": -3, + "arguments": [ { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 + "name": "path", + "type": "string", + "display_text": "path" + }, + { + "name": "configs", + "type": "block", + "token": "CONFIG", + "optional": true, + "multiple": true, + "multiple_token": true, + "arguments": [ + { + "name": "name", + "type": "string", + "display_text": "name" + }, + { + "name": "value", + "type": "string", + "display_text": "value" } - }, - "RO": true, - "access": true + ] + }, + { + "name": "args", + "type": "string", + "display_text": "args", + "token": "ARGS", + "optional": true, + "multiple": true } ], + "command_flags": [ + "admin", + "noscript", + "no_async_loading" + ] + }, + "MODULE UNLOAD": { + "summary": "Unloads a module.", + "since": "4.0.0", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" + ], + "arity": 3, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "name", + "type": "string", + "display_text": "name" } ], "command_flags": [ - "readonly" + "admin", + "noscript", + "no_async_loading" ] }, - "XINFO HELP": { - "summary": "Returns helpful text about the different subcommands.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(1)", + "MONITOR": { + "summary": "Listens for all requests received by the server in real-time.", + "since": "1.0.0", + "group": "server", "acl_categories": [ - "@stream", - "@slow" + "@admin", + "@slow", + "@dangerous" ], - "arity": 2, + "arity": 1, "command_flags": [ + "admin", + "noscript", "loading", "stale" ] }, - "XINFO STREAM": { - "summary": "Returns information about a stream.", - "since": "5.0.0", - "group": "stream", + "MOVE": { + "summary": "Moves a key to another database.", + "since": "1.0.0", + "group": "generic", "complexity": "O(1)", - "history": [ - [ - "6.0.0", - "Added the `FULL` modifier." - ], - [ - "7.0.0", - "Added the `max-deleted-entry-id`, `entries-added`, `recorded-first-entry-id`, `entries-read` and `lag` fields" - ], - [ - "7.2.0", - "Added the `active-time` field, and changed the meaning of `seen-time`." - ], - [ - "8.6.0", - "Added the `idmp-duration`, `idmp-maxsize`, `pids-tracked`, `iids-tracked`, `iids-added` and `iids-duplicates` fields for IDMP tracking." - ], - [ - "8.8.0", - "Added the `nacked-count` field to consumer groups in `FULL` output." - ] - ], "acl_categories": [ - "@read", - "@stream", - "@slow" + "@keyspace", + "@write", + "@fast" ], - "arity": -3, + "arity": 3, "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 2 + "index": 1 } }, "find_keys": { @@ -19651,8 +20732,9 @@ "limit": 0 } }, - "RO": true, - "access": true + "RW": true, + "access": true, + "update": true } ], "arguments": [ @@ -19663,41 +20745,27 @@ "key_spec_index": 0 }, { - "name": "full-block", - "type": "block", - "optional": true, - "arguments": [ - { - "name": "full", - "type": "pure-token", - "display_text": "full", - "token": "FULL" - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true - } - ] + "name": "db", + "type": "integer", + "display_text": "db" } ], "command_flags": [ - "readonly" + "write", + "fast" ] }, - "XLEN": { - "summary": "Return the number of messages in a stream.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(1)", + "MSET": { + "summary": "Atomically creates or modifies the string values of one or more keys.", + "since": "1.0.1", + "group": "string", + "complexity": "O(N) where N is the number of keys to set.", "acl_categories": [ - "@read", - "@stream", - "@fast" + "@write", + "@string", + "@slow" ], - "arity": 2, + "arity": -3, "key_specs": [ { "begin_search": { @@ -19709,38 +20777,55 @@ "find_keys": { "type": "range", "spec": { - "lastkey": 0, - "keystep": 1, + "lastkey": -1, + "keystep": 2, "limit": 0 } }, - "RO": true + "OW": true, + "update": true } ], "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "data", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "value", + "type": "string", + "display_text": "value" + } + ] } ], "command_flags": [ - "readonly", - "fast" + "write", + "denyoom" + ], + "hints": [ + "request_policy:multi_shard", + "response_policy:all_succeeded" ] }, - "XNACK": { - "summary": "Releases claimed messages back to the group's PEL without acknowledging them, making them available for re-delivery.", - "since": "8.8.0", - "group": "stream", - "complexity": "O(1) for each message ID processed.", + "MSETEX": { + "summary": "Atomically sets multiple string keys with a shared expiration in a single operation. Supports flexible argument parsing where condition and expiration flags can appear in any order.", + "since": "8.4.0", + "group": "string", + "complexity": "O(N) where N is the number of keys to set.", "acl_categories": [ "@write", - "@stream", - "@fast" + "@string", + "@slow" ], - "arity": -7, + "arity": -4, "key_specs": [ { "begin_search": { @@ -19750,105 +20835,116 @@ } }, "find_keys": { - "type": "range", + "type": "keynum", "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 + "keynumidx": 0, + "firstkey": 1, + "keystep": 2 } }, - "RW": true, + "OW": true, "update": true } ], "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 + "name": "numkeys", + "type": "integer", + "display_text": "numkeys" }, { - "name": "group", - "type": "string", - "display_text": "group" + "name": "data", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "value", + "type": "string", + "display_text": "value" + } + ] }, { - "name": "mode", + "name": "condition", "type": "oneof", + "optional": true, "arguments": [ { - "name": "silent", - "type": "pure-token", - "display_text": "silent", - "token": "SILENT" - }, - { - "name": "fail", + "name": "nx", "type": "pure-token", - "display_text": "fail", - "token": "FAIL" + "display_text": "nx", + "token": "NX" }, { - "name": "fatal", + "name": "xx", "type": "pure-token", - "display_text": "fatal", - "token": "FATAL" + "display_text": "xx", + "token": "XX" } ] }, { - "name": "ids", - "type": "block", - "token": "IDS", + "name": "expiration", + "type": "oneof", + "optional": true, "arguments": [ { - "name": "numids", + "name": "seconds", "type": "integer", - "display_text": "numids" + "display_text": "seconds", + "token": "EX" }, { - "name": "id", - "type": "string", - "display_text": "id", - "multiple": true + "name": "milliseconds", + "type": "integer", + "display_text": "milliseconds", + "token": "PX" + }, + { + "name": "unix-time-seconds", + "type": "unix-time", + "display_text": "unix-time-seconds", + "token": "EXAT" + }, + { + "name": "unix-time-milliseconds", + "type": "unix-time", + "display_text": "unix-time-milliseconds", + "token": "PXAT" + }, + { + "name": "keepttl", + "type": "pure-token", + "display_text": "keepttl", + "token": "KEEPTTL" } ] - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "RETRYCOUNT", - "optional": true - }, - { - "name": "force", - "type": "pure-token", - "display_text": "force", - "token": "FORCE", - "optional": true } ], "command_flags": [ "write", - "fast" + "denyoom", + "movablekeys" + ], + "hints": [ + "request_policy:multi_shard", + "response_policy:all_succeeded" ] }, - "XPENDING": { - "summary": "Returns the information and entries from a stream consumer group's pending entries list.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(N) with N being the number of elements returned, so asking for a small fixed number of entries per call is O(1). O(M), where M is the total number of entries scanned when used with the IDLE filter. When the command returns just the summary and the list of consumers is small, it runs in O(1) time; otherwise, an additional O(N) time for iterating every consumer.", - "history": [ - [ - "6.2.0", - "Added the `IDLE` option and exclusive range intervals." - ] - ], + "MSETNX": { + "summary": "Atomically modifies the string values of one or more keys only when all keys don't exist.", + "since": "1.0.1", + "group": "string", + "complexity": "O(N) where N is the number of keys to set.", "acl_categories": [ - "@read", - "@stream", + "@write", + "@string", "@slow" ], "arity": -3, @@ -19863,94 +20959,85 @@ "find_keys": { "type": "range", "spec": { - "lastkey": 0, - "keystep": 1, + "lastkey": -1, + "keystep": 2, "limit": 0 } }, - "RO": true, - "access": true + "OW": true, + "insert": true } ], "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "group", - "type": "string", - "display_text": "group" - }, - { - "name": "filters", + "name": "data", "type": "block", - "optional": true, + "multiple": true, "arguments": [ { - "name": "min-idle-time", - "type": "integer", - "display_text": "min-idle-time", - "token": "IDLE", - "since": "6.2.0", - "optional": true - }, - { - "name": "start", - "type": "string", - "display_text": "start" - }, - { - "name": "end", - "type": "string", - "display_text": "end" - }, - { - "name": "count", - "type": "integer", - "display_text": "count" + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 }, { - "name": "consumer", + "name": "value", "type": "string", - "display_text": "consumer", - "optional": true + "display_text": "value" } ] } ], "command_flags": [ - "readonly" + "write", + "denyoom" + ] + }, + "MULTI": { + "summary": "Starts a transaction.", + "since": "1.2.0", + "group": "transactions", + "complexity": "O(1)", + "acl_categories": [ + "@fast", + "@transaction" ], - "hints": [ - "nondeterministic_output" + "arity": 1, + "command_flags": [ + "noscript", + "loading", + "stale", + "fast", + "allow_busy" ] }, - "XRANGE": { - "summary": "Returns the messages from a stream within a range of IDs.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(N) with N being the number of elements being returned. If N is constant (e.g. always asking for the first 10 elements with COUNT), you can consider it O(1).", - "history": [ - [ - "6.2.0", - "Added exclusive ranges." - ] + "OBJECT": { + "summary": "A container for object introspection commands.", + "since": "2.2.3", + "group": "generic", + "complexity": "Depends on subcommand.", + "acl_categories": [ + "@slow" ], + "arity": -2 + }, + "OBJECT ENCODING": { + "summary": "Returns the internal encoding of a Redis object.", + "since": "2.2.3", + "group": "generic", + "complexity": "O(1)", "acl_categories": [ + "@keyspace", "@read", - "@stream", "@slow" ], - "arity": -4, + "arity": 3, "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 1 + "index": 2 } }, "find_keys": { @@ -19961,8 +21048,7 @@ "limit": 0 } }, - "RO": true, - "access": true + "RO": true } ], "arguments": [ @@ -19971,232 +21057,137 @@ "type": "key", "display_text": "key", "key_spec_index": 0 - }, - { - "name": "start", - "type": "string", - "display_text": "start" - }, - { - "name": "end", - "type": "string", - "display_text": "end" - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true } ], "command_flags": [ "readonly" + ], + "hints": [ + "nondeterministic_output" ] }, - "XREAD": { - "summary": "Returns messages from multiple streams with IDs greater than the ones requested. Blocks until a message is available otherwise.", - "since": "5.0.0", - "group": "stream", + "OBJECT FREQ": { + "summary": "Returns the logarithmic access frequency counter of a Redis object.", + "since": "4.0.0", + "group": "generic", + "complexity": "O(1)", "acl_categories": [ + "@keyspace", "@read", - "@stream", - "@slow", - "@blocking" + "@slow" ], - "arity": -4, + "arity": 3, "key_specs": [ { "begin_search": { - "type": "keyword", + "type": "index", "spec": { - "keyword": "STREAMS", - "startfrom": 1 + "index": 2 } }, "find_keys": { "type": "range", "spec": { - "lastkey": -1, + "lastkey": 0, "keystep": 1, - "limit": 2 + "limit": 0 } }, - "RO": true, - "access": true + "RO": true } ], "arguments": [ { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true - }, - { - "name": "milliseconds", - "type": "integer", - "display_text": "milliseconds", - "token": "BLOCK", - "optional": true - }, - { - "name": "streams", - "type": "block", - "token": "STREAMS", - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - }, - { - "name": "id", - "type": "string", - "display_text": "id", - "multiple": true - } - ] + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 } ], "command_flags": [ - "readonly", - "blocking", - "movablekeys" + "readonly" + ], + "hints": [ + "nondeterministic_output" ] }, - "XREADGROUP": { - "summary": "Returns new or historical messages from a stream for a consumer in a group. Blocks until a message is available otherwise.", - "since": "5.0.0", - "group": "stream", - "complexity": "For each stream mentioned: O(M) with M being the number of elements returned. If M is constant (e.g. always asking for the first 10 elements with COUNT), you can consider it O(1). On the other side when XREADGROUP blocks, XADD will pay the O(N) time in order to serve the N clients blocked on the stream getting new data.", + "OBJECT HELP": { + "summary": "Returns helpful text about the different subcommands.", + "since": "6.2.0", + "group": "generic", + "complexity": "O(1)", "acl_categories": [ - "@write", - "@stream", - "@slow", - "@blocking" + "@keyspace", + "@slow" ], - "arity": -7, + "arity": 2, + "command_flags": [ + "loading", + "stale" + ] + }, + "OBJECT IDLETIME": { + "summary": "Returns the time since the last access to a Redis object.", + "since": "2.2.3", + "group": "generic", + "complexity": "O(1)", + "acl_categories": [ + "@keyspace", + "@read", + "@slow" + ], + "arity": 3, "key_specs": [ { "begin_search": { - "type": "keyword", + "type": "index", "spec": { - "keyword": "STREAMS", - "startfrom": 4 + "index": 2 } }, "find_keys": { "type": "range", "spec": { - "lastkey": -1, + "lastkey": 0, "keystep": 1, - "limit": 2 + "limit": 0 } }, - "RO": true, - "access": true + "RO": true } ], "arguments": [ { - "name": "group-block", - "type": "block", - "token": "GROUP", - "arguments": [ - { - "name": "group", - "type": "string", - "display_text": "group" - }, - { - "name": "consumer", - "type": "string", - "display_text": "consumer" - } - ] - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true - }, - { - "name": "milliseconds", - "type": "integer", - "display_text": "milliseconds", - "token": "BLOCK", - "optional": true - }, - { - "name": "min-idle-time", - "type": "integer", - "display_text": "min-idle-time", - "token": "CLAIM", - "optional": true - }, - { - "name": "noack", - "type": "pure-token", - "display_text": "noack", - "token": "NOACK", - "optional": true - }, - { - "name": "streams", - "type": "block", - "token": "STREAMS", - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - }, - { - "name": "id", - "type": "string", - "display_text": "id", - "multiple": true - } - ] + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 } ], "command_flags": [ - "write", - "blocking", - "movablekeys" + "readonly" + ], + "hints": [ + "nondeterministic_output" ] }, - "XREVRANGE": { - "summary": "Returns the messages from a stream within a range of IDs in reverse order.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(N) with N being the number of elements returned. If N is constant (e.g. always asking for the first 10 elements with COUNT), you can consider it O(1).", - "history": [ - [ - "6.2.0", - "Added exclusive ranges." - ] - ], + "OBJECT REFCOUNT": { + "summary": "Returns the reference count of a value of a key.", + "since": "2.2.3", + "group": "generic", + "complexity": "O(1)", "acl_categories": [ + "@keyspace", "@read", - "@stream", "@slow" ], - "arity": -4, + "arity": 3, "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 1 + "index": 2 } }, "find_keys": { @@ -20207,8 +21198,7 @@ "limit": 0 } }, - "RO": true, - "access": true + "RO": true } ], "arguments": [ @@ -20217,46 +21207,26 @@ "type": "key", "display_text": "key", "key_spec_index": 0 - }, - { - "name": "end", - "type": "string", - "display_text": "end" - }, - { - "name": "start", - "type": "string", - "display_text": "start" - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true } ], "command_flags": [ "readonly" + ], + "hints": [ + "nondeterministic_output" ] }, - "XSETID": { - "summary": "An internal command for replicating stream values.", - "since": "5.0.0", - "group": "stream", + "PERSIST": { + "summary": "Removes the expiration time of a key.", + "since": "2.2.0", + "group": "generic", "complexity": "O(1)", - "history": [ - [ - "7.0.0", - "Added the `entries_added` and `max_deleted_entry_id` arguments." - ] - ], "acl_categories": [ + "@keyspace", "@write", - "@stream", "@fast" ], - "arity": -3, + "arity": 2, "key_specs": [ { "begin_search": { @@ -20283,56 +21253,30 @@ "type": "key", "display_text": "key", "key_spec_index": 0 - }, - { - "name": "last-id", - "type": "string", - "display_text": "last-id" - }, - { - "name": "entries-added", - "type": "integer", - "display_text": "entries-added", - "token": "ENTRIESADDED", - "since": "7.0.0", - "optional": true - }, - { - "name": "max-deleted-id", - "type": "string", - "display_text": "max-deleted-id", - "token": "MAXDELETEDID", - "since": "7.0.0", - "optional": true } ], "command_flags": [ "write", - "denyoom", "fast" ] }, - "XTRIM": { - "summary": "Deletes messages from the beginning of a stream.", - "since": "5.0.0", - "group": "stream", - "complexity": "O(N), with N being the number of evicted entries. Constant times are very small however, since entries are organized in macro nodes containing multiple entries that can be released with a single deallocation.", + "PEXPIRE": { + "summary": "Sets the expiration time of a key in milliseconds.", + "since": "2.6.0", + "group": "generic", + "complexity": "O(1)", "history": [ [ - "6.2.0", - "Added the `MINID` trimming strategy and the `LIMIT` option." - ], - [ - "8.2.0", - "Added the `KEEPREF`, `DELREF` and `ACKED` options." + "7.0.0", + "Added options: `NX`, `XX`, `GT` and `LT`." ] ], "acl_categories": [ + "@keyspace", "@write", - "@stream", - "@slow" + "@fast" ], - "arity": -4, + "arity": -3, "key_specs": [ { "begin_search": { @@ -20350,7 +21294,7 @@ } }, "RW": true, - "delete": true + "update": true } ], "arguments": [ @@ -20361,120 +21305,65 @@ "key_spec_index": 0 }, { - "name": "trim", - "type": "block", + "name": "milliseconds", + "type": "integer", + "display_text": "milliseconds" + }, + { + "name": "condition", + "type": "oneof", + "since": "7.0.0", + "optional": true, "arguments": [ { - "name": "strategy", - "type": "oneof", - "arguments": [ - { - "name": "maxlen", - "type": "pure-token", - "display_text": "maxlen", - "token": "MAXLEN" - }, - { - "name": "minid", - "type": "pure-token", - "display_text": "minid", - "token": "MINID", - "since": "6.2.0" - } - ] - }, - { - "name": "operator", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "equal", - "type": "pure-token", - "display_text": "equal", - "token": "=" - }, - { - "name": "approximately", - "type": "pure-token", - "display_text": "approximately", - "token": "~" - } - ] + "name": "nx", + "type": "pure-token", + "display_text": "nx", + "token": "NX" }, { - "name": "threshold", - "type": "string", - "display_text": "threshold" + "name": "xx", + "type": "pure-token", + "display_text": "xx", + "token": "XX" }, { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "LIMIT", - "since": "6.2.0", - "optional": true + "name": "gt", + "type": "pure-token", + "display_text": "gt", + "token": "GT" }, { - "name": "condition", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "keepref", - "type": "pure-token", - "display_text": "keepref", - "token": "KEEPREF" - }, - { - "name": "delref", - "type": "pure-token", - "display_text": "delref", - "token": "DELREF" - }, - { - "name": "acked", - "type": "pure-token", - "display_text": "acked", - "token": "ACKED" - } - ] + "name": "lt", + "type": "pure-token", + "display_text": "lt", + "token": "LT" } ] } ], "command_flags": [ - "write" - ], - "hints": [ - "nondeterministic_output" + "write", + "fast" ] }, - "ZADD": { - "summary": "Adds one or more members to a sorted set, or updates their scores. Creates the key if it doesn't exist.", - "since": "1.2.0", - "group": "sorted-set", - "complexity": "O(log(N)) for each item added, where N is the number of elements in the sorted set.", + "PEXPIREAT": { + "summary": "Sets the expiration time of a key to a Unix milliseconds timestamp.", + "since": "2.6.0", + "group": "generic", + "complexity": "O(1)", "history": [ [ - "2.4.0", - "Accepts multiple elements." - ], - [ - "3.0.2", - "Added the `XX`, `NX`, `CH` and `INCR` options." - ], - [ - "6.2.0", - "Added the `GT` and `LT` options." + "7.0.0", + "Added options: `NX`, `XX`, `GT` and `LT`." ] ], "acl_categories": [ + "@keyspace", "@write", - "@sortedset", "@fast" ], - "arity": -4, + "arity": -3, "key_specs": [ { "begin_search": { @@ -20502,10 +21391,15 @@ "display_text": "key", "key_spec_index": 0 }, + { + "name": "unix-time-milliseconds", + "type": "unix-time", + "display_text": "unix-time-milliseconds" + }, { "name": "condition", "type": "oneof", - "since": "3.0.2", + "since": "7.0.0", "optional": true, "arguments": [ { @@ -20519,15 +21413,7 @@ "type": "pure-token", "display_text": "xx", "token": "XX" - } - ] - }, - { - "name": "comparison", - "type": "oneof", - "since": "6.2.0", - "optional": true, - "arguments": [ + }, { "name": "gt", "type": "pure-token", @@ -20541,55 +21427,21 @@ "token": "LT" } ] - }, - { - "name": "change", - "type": "pure-token", - "display_text": "change", - "token": "CH", - "since": "3.0.2", - "optional": true - }, - { - "name": "increment", - "type": "pure-token", - "display_text": "increment", - "token": "INCR", - "since": "3.0.2", - "optional": true - }, - { - "name": "data", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "score", - "type": "double", - "display_text": "score" - }, - { - "name": "member", - "type": "string", - "display_text": "member" - } - ] } ], "command_flags": [ "write", - "denyoom", "fast" ] }, - "ZCARD": { - "summary": "Returns the number of members in a sorted set.", - "since": "1.2.0", - "group": "sorted-set", + "PEXPIRETIME": { + "summary": "Returns the expiration time of a key as a Unix milliseconds timestamp.", + "since": "7.0.0", + "group": "generic", "complexity": "O(1)", "acl_categories": [ + "@keyspace", "@read", - "@sortedset", "@fast" ], "arity": 2, @@ -20609,7 +21461,8 @@ "limit": 0 } }, - "RO": true + "RO": true, + "access": true } ], "arguments": [ @@ -20625,17 +21478,17 @@ "fast" ] }, - "ZCOUNT": { - "summary": "Returns the count of members in a sorted set that have scores within a range.", - "since": "2.0.0", - "group": "sorted-set", - "complexity": "O(log(N)) with N being the number of elements in the sorted set.", + "PFADD": { + "summary": "Adds elements to a HyperLogLog key. Creates the key if it doesn't exist.", + "since": "2.8.9", + "group": "hyperloglog", + "complexity": "O(1) to add every element.", "acl_categories": [ - "@read", - "@sortedset", + "@write", + "@hyperloglog", "@fast" ], - "arity": 4, + "arity": -2, "key_specs": [ { "begin_search": { @@ -20652,8 +21505,8 @@ "limit": 0 } }, - "RO": true, - "access": true + "RW": true, + "insert": true } ], "arguments": [ @@ -20664,34 +21517,33 @@ "key_spec_index": 0 }, { - "name": "min", - "type": "double", - "display_text": "min" - }, - { - "name": "max", - "type": "double", - "display_text": "max" - } - ], - "command_flags": [ - "readonly", + "name": "element", + "type": "string", + "display_text": "element", + "optional": true, + "multiple": true + } + ], + "command_flags": [ + "write", + "denyoom", "fast" ] }, - "ZDIFF": { - "summary": "Returns the difference between multiple sorted sets.", - "since": "6.2.0", - "group": "sorted-set", - "complexity": "O(L + (N-K)log(N)) worst case where L is the total number of elements in all the sets, N is the size of the first set, and K is the size of the result set.", + "PFCOUNT": { + "summary": "Returns the approximated cardinality of the set(s) observed by the HyperLogLog key(s).", + "since": "2.8.9", + "group": "hyperloglog", + "complexity": "O(1) with a very small average constant time when called with a single key. O(N) with N being the number of keys, and much bigger constant times, when called with multiple keys.", "acl_categories": [ "@read", - "@sortedset", + "@hyperloglog", "@slow" ], - "arity": -3, + "arity": -2, "key_specs": [ { + "notes": "RW because it may change the internal representation of the key, and propagate to replicas", "begin_search": { "type": "index", "spec": { @@ -20699,54 +21551,96 @@ } }, "find_keys": { - "type": "keynum", + "type": "range", "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 + "lastkey": -1, + "keystep": 1, + "limit": 0 } }, - "RO": true, + "RW": true, "access": true } ], "arguments": [ - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, { "name": "key", "type": "key", "display_text": "key", "key_spec_index": 0, "multiple": true + } + ], + "command_flags": [ + "readonly" + ] + }, + "PFDEBUG": { + "summary": "Internal commands for debugging HyperLogLog values.", + "since": "2.8.9", + "group": "hyperloglog", + "complexity": "N/A", + "acl_categories": [ + "@write", + "@hyperloglog", + "@admin", + "@slow", + "@dangerous" + ], + "arity": 3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true + } + ], + "arguments": [ + { + "name": "subcommand", + "type": "string", + "display_text": "subcommand" }, { - "name": "withscores", - "type": "pure-token", - "display_text": "withscores", - "token": "WITHSCORES", - "optional": true + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 } ], "command_flags": [ - "readonly", - "movablekeys" + "write", + "denyoom", + "admin" + ], + "doc_flags": [ + "syscmd" ] }, - "ZDIFFSTORE": { - "summary": "Stores the difference of multiple sorted sets in a key.", - "since": "6.2.0", - "group": "sorted-set", - "complexity": "O(L + (N-K)log(N)) worst case where L is the total number of elements in all the sets, N is the size of the first set, and K is the size of the result set.", + "PFMERGE": { + "summary": "Merges one or more HyperLogLog values into a single key.", + "since": "2.8.9", + "group": "hyperloglog", + "complexity": "O(N) to merge N HyperLogLogs, but with high constant times.", "acl_categories": [ "@write", - "@sortedset", + "@hyperloglog", "@slow" ], - "arity": -4, + "arity": -2, "key_specs": [ { "begin_search": { @@ -20763,8 +21657,9 @@ "limit": 0 } }, - "OW": true, - "update": true + "RW": true, + "access": true, + "insert": true }, { "begin_search": { @@ -20774,11 +21669,11 @@ } }, "find_keys": { - "type": "keynum", + "type": "range", "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 + "lastkey": -1, + "keystep": 1, + "limit": 0 } }, "RO": true, @@ -20787,39 +21682,81 @@ ], "arguments": [ { - "name": "destination", + "name": "destkey", "type": "key", - "display_text": "destination", + "display_text": "destkey", "key_spec_index": 0 }, { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", + "name": "sourcekey", "type": "key", - "display_text": "key", + "display_text": "sourcekey", "key_spec_index": 1, + "optional": true, "multiple": true } ], "command_flags": [ "write", - "denyoom", - "movablekeys" + "denyoom" ] }, - "ZINCRBY": { - "summary": "Increments the score of a member in a sorted set.", - "since": "1.2.0", - "group": "sorted-set", - "complexity": "O(log(N)) where N is the number of elements in the sorted set.", + "PFSELFTEST": { + "summary": "An internal command for testing HyperLogLog values.", + "since": "2.8.9", + "group": "hyperloglog", + "complexity": "N/A", + "acl_categories": [ + "@hyperloglog", + "@admin", + "@slow", + "@dangerous" + ], + "arity": 1, + "command_flags": [ + "admin" + ], + "doc_flags": [ + "syscmd" + ] + }, + "PING": { + "summary": "Returns the server's liveliness response.", + "since": "1.0.0", + "group": "connection", + "complexity": "O(1)", + "acl_categories": [ + "@fast", + "@connection" + ], + "arity": -1, + "arguments": [ + { + "name": "message", + "type": "string", + "display_text": "message", + "optional": true + } + ], + "command_flags": [ + "fast" + ], + "hints": [ + "request_policy:all_shards", + "response_policy:all_succeeded" + ] + }, + "PSETEX": { + "summary": "Sets both string value and expiration time in milliseconds of a key. The key is created if it doesn't exist.", + "since": "2.6.0", + "group": "string", + "complexity": "O(1)", + "deprecated_since": "2.6.12", + "replaced_by": "`SET` with the `PX` argument", "acl_categories": [ "@write", - "@sortedset", - "@fast" + "@string", + "@slow" ], "arity": 4, "key_specs": [ @@ -20838,8 +21775,7 @@ "limit": 0 } }, - "RW": true, - "access": true, + "OW": true, "update": true } ], @@ -20851,200 +21787,96 @@ "key_spec_index": 0 }, { - "name": "increment", + "name": "milliseconds", "type": "integer", - "display_text": "increment" + "display_text": "milliseconds" }, { - "name": "member", + "name": "value", "type": "string", - "display_text": "member" + "display_text": "value" } ], "command_flags": [ "write", - "denyoom", - "fast" + "denyoom" + ], + "doc_flags": [ + "deprecated" ] }, - "ZINTER": { - "summary": "Returns the intersect of multiple sorted sets.", - "since": "6.2.0", - "group": "sorted-set", - "complexity": "O(N*K)+O(M*log(M)) worst case with N being the smallest input sorted set, K being the number of input sorted sets and M being the number of elements in the resulting sorted set.", - "history": [ - [ - "8.8.0", - "Added `COUNT` aggregate option." - ] - ], + "PSUBSCRIBE": { + "summary": "Listens for messages published to channels that match one or more patterns.", + "since": "2.0.0", + "group": "pubsub", + "complexity": "O(N) where N is the number of patterns to subscribe to.", "acl_categories": [ - "@read", - "@sortedset", + "@pubsub", "@slow" ], - "arity": -3, - "key_specs": [ + "arity": -2, + "arguments": [ { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RO": true, - "access": true - } - ], - "arguments": [ - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - }, - { - "name": "weight", - "type": "integer", - "display_text": "weight", - "token": "WEIGHTS", - "optional": true, + "name": "pattern", + "type": "pattern", + "display_text": "pattern", "multiple": true - }, - { - "name": "aggregate", - "type": "oneof", - "token": "AGGREGATE", - "optional": true, - "arguments": [ - { - "name": "sum", - "type": "pure-token", - "display_text": "sum", - "token": "SUM" - }, - { - "name": "min", - "type": "pure-token", - "display_text": "min", - "token": "MIN" - }, - { - "name": "max", - "type": "pure-token", - "display_text": "max", - "token": "MAX" - }, - { - "name": "count", - "type": "pure-token", - "display_text": "count", - "token": "COUNT", - "since": "8.8.0" - } - ] - }, - { - "name": "withscores", - "type": "pure-token", - "display_text": "withscores", - "token": "WITHSCORES", - "optional": true } ], "command_flags": [ - "readonly", - "movablekeys" + "denyoom", + "pubsub", + "noscript", + "loading", + "stale" ] }, - "ZINTERCARD": { - "summary": "Returns the number of members of the intersect of multiple sorted sets.", - "since": "7.0.0", - "group": "sorted-set", - "complexity": "O(N*K) worst case with N being the smallest input sorted set, K being the number of input sorted sets.", + "PSYNC": { + "summary": "An internal command used in replication.", + "since": "2.8.0", + "group": "server", "acl_categories": [ - "@read", - "@sortedset", - "@slow" + "@admin", + "@slow", + "@dangerous" ], "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RO": true, - "access": true - } - ], "arguments": [ { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true + "name": "replicationid", + "type": "string", + "display_text": "replicationid" }, { - "name": "limit", + "name": "offset", "type": "integer", - "display_text": "limit", - "token": "LIMIT", - "optional": true + "display_text": "offset" } ], "command_flags": [ - "readonly", - "movablekeys" + "admin", + "noscript", + "no_async_loading", + "no_multi" ] }, - "ZINTERSTORE": { - "summary": "Stores the intersect of multiple sorted sets in a key.", - "since": "2.0.0", - "group": "sorted-set", - "complexity": "O(N*K)+O(M*log(M)) worst case with N being the smallest input sorted set, K being the number of input sorted sets and M being the number of elements in the resulting sorted set.", + "PTTL": { + "summary": "Returns the expiration time in milliseconds of a key.", + "since": "2.6.0", + "group": "generic", + "complexity": "O(1)", "history": [ [ - "8.8.0", - "Added `COUNT` aggregate option." + "2.8.0", + "Added the -2 reply." ] ], "acl_categories": [ - "@write", - "@sortedset", - "@slow" + "@keyspace", + "@read", + "@fast" ], - "arity": -4, + "arity": 2, "key_specs": [ { "begin_search": { @@ -21061,337 +21893,306 @@ "limit": 0 } }, - "OW": true, - "update": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, "RO": true, "access": true } ], "arguments": [ - { - "name": "destination", - "type": "key", - "display_text": "destination", - "key_spec_index": 0 - }, - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, { "name": "key", "type": "key", "display_text": "key", - "key_spec_index": 1, - "multiple": true - }, - { - "name": "weight", - "type": "integer", - "display_text": "weight", - "token": "WEIGHTS", - "optional": true, - "multiple": true - }, - { - "name": "aggregate", - "type": "oneof", - "token": "AGGREGATE", - "optional": true, - "arguments": [ - { - "name": "sum", - "type": "pure-token", - "display_text": "sum", - "token": "SUM" - }, - { - "name": "min", - "type": "pure-token", - "display_text": "min", - "token": "MIN" - }, - { - "name": "max", - "type": "pure-token", - "display_text": "max", - "token": "MAX" - }, - { - "name": "count", - "type": "pure-token", - "display_text": "count", - "token": "COUNT", - "since": "8.8.0" - } - ] + "key_spec_index": 0 } ], "command_flags": [ - "write", - "denyoom", - "movablekeys" + "readonly", + "fast" + ], + "hints": [ + "nondeterministic_output" ] }, - "ZLEXCOUNT": { - "summary": "Returns the number of members in a sorted set within a lexicographical range.", - "since": "2.8.9", - "group": "sorted-set", - "complexity": "O(log(N)) with N being the number of elements in the sorted set.", + "PUBLISH": { + "summary": "Posts a message to a channel.", + "since": "2.0.0", + "group": "pubsub", + "complexity": "O(N+M) where N is the number of clients subscribed to the receiving channel and M is the total number of subscribed patterns (by any client).", "acl_categories": [ - "@read", - "@sortedset", + "@pubsub", "@fast" ], - "arity": 4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } - ], + "arity": 3, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "min", + "name": "channel", "type": "string", - "display_text": "min" + "display_text": "channel" }, { - "name": "max", + "name": "message", "type": "string", - "display_text": "max" + "display_text": "message" } ], "command_flags": [ - "readonly", + "pubsub", + "loading", + "stale", "fast" ] }, - "ZMPOP": { - "summary": "Returns the highest- or lowest-scoring members from one or more sorted sets after removing them. Deletes the sorted set if the last member was popped.", - "since": "7.0.0", - "group": "sorted-set", - "complexity": "O(K) + O(M*log(N)) where K is the number of provided keys, N being the number of elements in the sorted set, and M being the number of elements popped.", + "PUBSUB": { + "summary": "A container for Pub/Sub commands.", + "since": "2.8.0", + "group": "pubsub", + "complexity": "Depends on subcommand.", "acl_categories": [ - "@write", - "@sortedset", "@slow" ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RW": true, - "access": true, - "delete": true - } + "arity": -2 + }, + "PUBSUB CHANNELS": { + "summary": "Returns the active channels.", + "since": "2.8.0", + "group": "pubsub", + "complexity": "O(N) where N is the number of active channels, and assuming constant time pattern matching (relatively short channels and patterns)", + "acl_categories": [ + "@pubsub", + "@slow" ], + "arity": -2, "arguments": [ { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0, - "multiple": true - }, - { - "name": "where", - "type": "oneof", - "arguments": [ - { - "name": "min", - "type": "pure-token", - "display_text": "min", - "token": "MIN" - }, - { - "name": "max", - "type": "pure-token", - "display_text": "max", - "token": "MAX" - } - ] - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", + "name": "pattern", + "type": "pattern", + "display_text": "pattern", "optional": true } ], "command_flags": [ - "write", - "movablekeys" + "pubsub", + "loading", + "stale" ] }, - "ZMSCORE": { - "summary": "Returns the score of one or more members in a sorted set.", + "PUBSUB HELP": { + "summary": "Returns helpful text about the different subcommands.", "since": "6.2.0", - "group": "sorted-set", - "complexity": "O(N) where N is the number of members being requested.", + "group": "pubsub", + "complexity": "O(1)", "acl_categories": [ - "@read", - "@sortedset", - "@fast" + "@slow" ], - "arity": -3, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } + "arity": 2, + "command_flags": [ + "loading", + "stale" + ] + }, + "PUBSUB NUMPAT": { + "summary": "Returns a count of unique pattern subscriptions.", + "since": "2.8.0", + "group": "pubsub", + "complexity": "O(1)", + "acl_categories": [ + "@pubsub", + "@slow" + ], + "arity": 2, + "command_flags": [ + "pubsub", + "loading", + "stale" + ] + }, + "PUBSUB NUMSUB": { + "summary": "Returns a count of subscribers to channels.", + "since": "2.8.0", + "group": "pubsub", + "complexity": "O(N) for the NUMSUB subcommand, where N is the number of requested channels", + "acl_categories": [ + "@pubsub", + "@slow" ], + "arity": -2, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "member", + "name": "channel", "type": "string", - "display_text": "member", + "display_text": "channel", + "optional": true, "multiple": true } ], "command_flags": [ - "readonly", - "fast" + "pubsub", + "loading", + "stale" ] }, - "ZPOPMAX": { - "summary": "Returns the highest-scoring members from a sorted set after removing them. Deletes the sorted set if the last member was popped.", - "since": "5.0.0", - "group": "sorted-set", - "complexity": "O(log(N)*M) with N being the number of elements in the sorted set, and M being the number of elements popped.", + "PUBSUB SHARDCHANNELS": { + "summary": "Returns the active shard channels.", + "since": "7.0.0", + "group": "pubsub", + "complexity": "O(N) where N is the number of active shard channels, and assuming constant time pattern matching (relatively short shard channels).", "acl_categories": [ - "@write", - "@sortedset", - "@fast" + "@pubsub", + "@slow" ], "arity": -2, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RW": true, - "access": true, - "delete": true - } - ], "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "count", - "type": "integer", - "display_text": "count", + "name": "pattern", + "type": "pattern", + "display_text": "pattern", "optional": true } ], "command_flags": [ - "write", - "fast" + "pubsub", + "loading", + "stale" ] }, - "ZPOPMIN": { - "summary": "Returns the lowest-scoring members from a sorted set after removing them. Deletes the sorted set if the last member was popped.", - "since": "5.0.0", - "group": "sorted-set", - "complexity": "O(log(N)*M) with N being the number of elements in the sorted set, and M being the number of elements popped.", + "PUBSUB SHARDNUMSUB": { + "summary": "Returns the count of subscribers of shard channels.", + "since": "7.0.0", + "group": "pubsub", + "complexity": "O(N) for the SHARDNUMSUB subcommand, where N is the number of requested shard channels", "acl_categories": [ - "@write", - "@sortedset", - "@fast" + "@pubsub", + "@slow" ], "arity": -2, + "arguments": [ + { + "name": "shardchannel", + "type": "string", + "display_text": "shardchannel", + "optional": true, + "multiple": true + } + ], + "command_flags": [ + "pubsub", + "loading", + "stale" + ] + }, + "PUNSUBSCRIBE": { + "summary": "Stops listening to messages published to channels that match one or more patterns.", + "since": "2.0.0", + "group": "pubsub", + "complexity": "O(N) where N is the number of patterns to unsubscribe.", + "acl_categories": [ + "@pubsub", + "@slow" + ], + "arity": -1, + "arguments": [ + { + "name": "pattern", + "type": "pattern", + "display_text": "pattern", + "optional": true, + "multiple": true + } + ], + "command_flags": [ + "pubsub", + "noscript", + "loading", + "stale" + ] + }, + "QUIT": { + "summary": "Closes the connection.", + "since": "1.0.0", + "group": "connection", + "complexity": "O(1)", + "deprecated_since": "7.2.0", + "replaced_by": "just closing the connection", + "acl_categories": [ + "@fast", + "@connection" + ], + "arity": -1, + "command_flags": [ + "noscript", + "loading", + "stale", + "fast", + "no_auth", + "allow_busy" + ], + "doc_flags": [ + "deprecated" + ] + }, + "RANDOMKEY": { + "summary": "Returns a random key name from the database.", + "since": "1.0.0", + "group": "generic", + "complexity": "O(1)", + "acl_categories": [ + "@keyspace", + "@read", + "@slow" + ], + "arity": 1, + "command_flags": [ + "readonly" + ], + "hints": [ + "request_policy:all_shards", + "response_policy:special", + "nondeterministic_output" + ] + }, + "READONLY": { + "summary": "Enables read-only queries for a connection to a Redis Cluster replica node.", + "since": "3.0.0", + "group": "cluster", + "complexity": "O(1)", + "acl_categories": [ + "@fast", + "@connection" + ], + "arity": 1, + "command_flags": [ + "loading", + "stale", + "fast" + ] + }, + "READWRITE": { + "summary": "Enables read-write queries for a connection to a Reids Cluster replica node.", + "since": "3.0.0", + "group": "cluster", + "complexity": "O(1)", + "acl_categories": [ + "@fast", + "@connection" + ], + "arity": 1, + "command_flags": [ + "loading", + "stale", + "fast" + ] + }, + "RENAME": { + "summary": "Renames a key and overwrites the destination.", + "since": "1.0.0", + "group": "generic", + "complexity": "O(1)", + "acl_categories": [ + "@keyspace", + "@write", + "@slow" + ], + "arity": 3, "key_specs": [ { "begin_search": { @@ -21411,44 +22212,12 @@ "RW": true, "access": true, "delete": true - } - ], - "arguments": [ - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "optional": true - } - ], - "command_flags": [ - "write", - "fast" - ] - }, - "ZRANDMEMBER": { - "summary": "Returns one or more random members from a sorted set.", - "since": "6.2.0", - "group": "sorted-set", - "complexity": "O(N) where N is the number of members returned", - "acl_categories": [ - "@read", - "@sortedset", - "@slow" - ], - "arity": -2, - "key_specs": [ { "begin_search": { "type": "index", "spec": { - "index": 1 + "index": 2 } }, "find_keys": { @@ -21459,8 +22228,8 @@ "limit": 0 } }, - "RO": true, - "access": true + "OW": true, + "update": true } ], "arguments": [ @@ -21471,49 +22240,33 @@ "key_spec_index": 0 }, { - "name": "options", - "type": "block", - "optional": true, - "arguments": [ - { - "name": "count", - "type": "integer", - "display_text": "count" - }, - { - "name": "withscores", - "type": "pure-token", - "display_text": "withscores", - "token": "WITHSCORES", - "optional": true - } - ] + "name": "newkey", + "type": "key", + "display_text": "newkey", + "key_spec_index": 1 } ], "command_flags": [ - "readonly" - ], - "hints": [ - "nondeterministic_output" + "write" ] }, - "ZRANGE": { - "summary": "Returns members in a sorted set within a range of indexes.", - "since": "1.2.0", - "group": "sorted-set", - "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements returned.", + "RENAMENX": { + "summary": "Renames a key only when the target key name doesn't exist.", + "since": "1.0.0", + "group": "generic", + "complexity": "O(1)", "history": [ [ - "6.2.0", - "Added the `REV`, `BYSCORE`, `BYLEX` and `LIMIT` options." + "3.2.0", + "The command no longer returns an error when source and destination names are the same." ] ], "acl_categories": [ - "@read", - "@sortedset", - "@slow" + "@keyspace", + "@write", + "@fast" ], - "arity": -4, + "arity": 3, "key_specs": [ { "begin_search": { @@ -21530,8 +22283,27 @@ "limit": 0 } }, - "RO": true, - "access": true + "RW": true, + "access": true, + "delete": true + }, + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "OW": true, + "insert": true } ], "arguments": [ @@ -21542,167 +22314,142 @@ "key_spec_index": 0 }, { - "name": "start", - "type": "string", - "display_text": "start" - }, - { - "name": "stop", - "type": "string", - "display_text": "stop" - }, - { - "name": "sortby", - "type": "oneof", - "since": "6.2.0", - "optional": true, - "arguments": [ - { - "name": "byscore", - "type": "pure-token", - "display_text": "byscore", - "token": "BYSCORE" - }, - { - "name": "bylex", - "type": "pure-token", - "display_text": "bylex", - "token": "BYLEX" - } - ] - }, - { - "name": "rev", - "type": "pure-token", - "display_text": "rev", - "token": "REV", - "since": "6.2.0", - "optional": true - }, - { - "name": "limit", - "type": "block", - "token": "LIMIT", - "since": "6.2.0", - "optional": true, - "arguments": [ - { - "name": "offset", - "type": "integer", - "display_text": "offset" - }, - { - "name": "count", - "type": "integer", - "display_text": "count" - } - ] - }, - { - "name": "withscores", - "type": "pure-token", - "display_text": "withscores", - "token": "WITHSCORES", - "optional": true + "name": "newkey", + "type": "key", + "display_text": "newkey", + "key_spec_index": 1 } ], "command_flags": [ - "readonly" + "write", + "fast" ] }, - "ZRANGEBYLEX": { - "summary": "Returns members in a sorted set within a lexicographical range.", - "since": "2.8.9", - "group": "sorted-set", - "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements being returned. If M is constant (e.g. always asking for the first 10 elements with LIMIT), you can consider it O(log(N)).", - "deprecated_since": "6.2.0", - "replaced_by": "`ZRANGE` with the `BYLEX` argument", + "REPLCONF": { + "summary": "An internal command for configuring the replication stream.", + "since": "3.0.0", + "group": "server", + "complexity": "O(1)", "acl_categories": [ - "@read", - "@sortedset", - "@slow" + "@admin", + "@slow", + "@dangerous" ], - "arity": -4, - "key_specs": [ - { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true - } + "arity": -1, + "command_flags": [ + "admin", + "noscript", + "loading", + "stale", + "allow_busy" + ], + "doc_flags": [ + "syscmd" + ] + }, + "REPLICAOF": { + "summary": "Configures a server as replica of another, or promotes it to a master.", + "since": "5.0.0", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" ], + "arity": 3, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "min", - "type": "string", - "display_text": "min" - }, - { - "name": "max", - "type": "string", - "display_text": "max" - }, - { - "name": "limit", - "type": "block", - "token": "LIMIT", - "optional": true, + "name": "args", + "type": "oneof", "arguments": [ { - "name": "offset", - "type": "integer", - "display_text": "offset" + "name": "host-port", + "type": "block", + "arguments": [ + { + "name": "host", + "type": "string", + "display_text": "host" + }, + { + "name": "port", + "type": "integer", + "display_text": "port" + } + ] }, { - "name": "count", - "type": "integer", - "display_text": "count" + "name": "no-one", + "type": "block", + "arguments": [ + { + "name": "no", + "type": "pure-token", + "display_text": "no", + "token": "NO" + }, + { + "name": "one", + "type": "pure-token", + "display_text": "one", + "token": "ONE" + } + ] } ] } ], "command_flags": [ - "readonly" + "admin", + "noscript", + "stale", + "no_async_loading" + ] + }, + "RESET": { + "summary": "Resets the connection.", + "since": "6.2.0", + "group": "connection", + "complexity": "O(1)", + "acl_categories": [ + "@fast", + "@connection" ], - "doc_flags": [ - "deprecated" + "arity": 1, + "command_flags": [ + "noscript", + "loading", + "stale", + "fast", + "no_auth", + "allow_busy" ] }, - "ZRANGEBYSCORE": { - "summary": "Returns members in a sorted set within a range of scores.", - "since": "1.0.5", - "group": "sorted-set", - "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements being returned. If M is constant (e.g. always asking for the first 10 elements with LIMIT), you can consider it O(log(N)).", - "deprecated_since": "6.2.0", - "replaced_by": "`ZRANGE` with the `BYSCORE` argument", + "RESTORE": { + "summary": "Creates a key from the serialized representation of a value.", + "since": "2.6.0", + "group": "generic", + "complexity": "O(1) to create the new key and additional O(N*M) to reconstruct the serialized value, where N is the number of Redis objects composing the value and M their average size. For small string values the time complexity is thus O(1)+O(1*M) where M is small, so simply O(1). However for sorted set values the complexity is O(N*M*log(N)) because inserting values into sorted sets is O(log(N)).", "history": [ [ - "2.0.0", - "Added the `WITHSCORES` modifier." + "3.0.0", + "Added the `REPLACE` modifier." + ], + [ + "5.0.0", + "Added the `ABSTTL` modifier." + ], + [ + "5.0.0", + "Added the `IDLETIME` and `FREQ` options." ] ], "acl_categories": [ - "@read", - "@sortedset", - "@slow" + "@keyspace", + "@write", + "@slow", + "@dangerous" ], "arity": -4, "key_specs": [ @@ -21721,8 +22468,8 @@ "limit": 0 } }, - "RO": true, - "access": true + "OW": true, + "update": true } ], "arguments": [ @@ -21733,60 +22480,79 @@ "key_spec_index": 0 }, { - "name": "min", - "type": "double", - "display_text": "min" + "name": "ttl", + "type": "integer", + "display_text": "ttl" }, { - "name": "max", - "type": "double", - "display_text": "max" + "name": "serialized-value", + "type": "string", + "display_text": "serialized-value" }, { - "name": "withscores", + "name": "replace", "type": "pure-token", - "display_text": "withscores", - "token": "WITHSCORES", - "since": "2.0.0", + "display_text": "replace", + "token": "REPLACE", + "since": "3.0.0", "optional": true }, { - "name": "limit", - "type": "block", - "token": "LIMIT", - "optional": true, - "arguments": [ - { - "name": "offset", - "type": "integer", - "display_text": "offset" - }, - { - "name": "count", - "type": "integer", - "display_text": "count" - } - ] + "name": "absttl", + "type": "pure-token", + "display_text": "absttl", + "token": "ABSTTL", + "since": "5.0.0", + "optional": true + }, + { + "name": "seconds", + "type": "integer", + "display_text": "seconds", + "token": "IDLETIME", + "since": "5.0.0", + "optional": true + }, + { + "name": "frequency", + "type": "integer", + "display_text": "frequency", + "token": "FREQ", + "since": "5.0.0", + "optional": true } ], "command_flags": [ - "readonly" - ], - "doc_flags": [ - "deprecated" + "write", + "denyoom" ] }, - "ZRANGESTORE": { - "summary": "Stores a range of members from sorted set in a key.", - "since": "6.2.0", - "group": "sorted-set", - "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements stored into the destination key.", + "RESTORE-ASKING": { + "summary": "An internal command for migrating keys in a cluster.", + "since": "3.0.0", + "group": "server", + "complexity": "O(1) to create the new key and additional O(N*M) to reconstruct the serialized value, where N is the number of Redis objects composing the value and M their average size. For small string values the time complexity is thus O(1)+O(1*M) where M is small, so simply O(1). However for sorted set values the complexity is O(N*M*log(N)) because inserting values into sorted sets is O(log(N)).", + "history": [ + [ + "3.0.0", + "Added the `REPLACE` modifier." + ], + [ + "5.0.0", + "Added the `ABSTTL` modifier." + ], + [ + "5.0.0", + "Added the `IDLETIME` and `FREQ` options." + ] + ], "acl_categories": [ + "@keyspace", "@write", - "@sortedset", - "@slow" + "@slow", + "@dangerous" ], - "arity": -5, + "arity": -4, "key_specs": [ { "begin_search": { @@ -21805,116 +22571,102 @@ }, "OW": true, "update": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 - } - }, - "RO": true, - "access": true } ], "arguments": [ { - "name": "dst", + "name": "key", "type": "key", - "display_text": "dst", + "display_text": "key", "key_spec_index": 0 }, { - "name": "src", - "type": "key", - "display_text": "src", - "key_spec_index": 1 + "name": "ttl", + "type": "integer", + "display_text": "ttl" }, { - "name": "min", + "name": "serialized-value", "type": "string", - "display_text": "min" + "display_text": "serialized-value" }, { - "name": "max", - "type": "string", - "display_text": "max" + "name": "replace", + "type": "pure-token", + "display_text": "replace", + "token": "REPLACE", + "since": "3.0.0", + "optional": true }, { - "name": "sortby", - "type": "oneof", - "optional": true, - "arguments": [ - { - "name": "byscore", - "type": "pure-token", - "display_text": "byscore", - "token": "BYSCORE" - }, - { - "name": "bylex", - "type": "pure-token", - "display_text": "bylex", - "token": "BYLEX" - } - ] + "name": "absttl", + "type": "pure-token", + "display_text": "absttl", + "token": "ABSTTL", + "since": "5.0.0", + "optional": true }, { - "name": "rev", - "type": "pure-token", - "display_text": "rev", - "token": "REV", + "name": "seconds", + "type": "integer", + "display_text": "seconds", + "token": "IDLETIME", + "since": "5.0.0", "optional": true }, { - "name": "limit", - "type": "block", - "token": "LIMIT", - "optional": true, - "arguments": [ - { - "name": "offset", - "type": "integer", - "display_text": "offset" - }, - { - "name": "count", - "type": "integer", - "display_text": "count" - } - ] + "name": "frequency", + "type": "integer", + "display_text": "frequency", + "token": "FREQ", + "since": "5.0.0", + "optional": true } ], "command_flags": [ "write", - "denyoom" + "denyoom", + "asking" + ], + "doc_flags": [ + "syscmd" ] }, - "ZRANK": { - "summary": "Returns the index of a member in a sorted set ordered by ascending scores.", - "since": "2.0.0", - "group": "sorted-set", - "complexity": "O(log(N))", + "ROLE": { + "summary": "Returns the replication role.", + "since": "2.8.12", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@admin", + "@fast", + "@dangerous" + ], + "arity": 1, + "command_flags": [ + "noscript", + "loading", + "stale", + "fast" + ] + }, + "RPOP": { + "summary": "Returns and removes the last elements of a list. Deletes the list if the last element was popped.", + "since": "1.0.0", + "group": "list", + "complexity": "O(N) where N is the number of elements returned", "history": [ [ - "7.2.0", - "Added the optional `WITHSCORE` argument." + "6.2.0", + "Added the `count` argument." ] ], "acl_categories": [ - "@read", - "@sortedset", + "@write", + "@list", "@fast" ], - "arity": -3, + "arity": -2, "key_specs": [ { "begin_search": { @@ -21931,8 +22683,9 @@ "limit": 0 } }, - "RO": true, - "access": true + "RW": true, + "access": true, + "delete": true } ], "arguments": [ @@ -21943,40 +22696,31 @@ "key_spec_index": 0 }, { - "name": "member", - "type": "string", - "display_text": "member" - }, - { - "name": "withscore", - "type": "pure-token", - "display_text": "withscore", - "token": "WITHSCORE", + "name": "count", + "type": "integer", + "display_text": "count", + "since": "6.2.0", "optional": true } ], "command_flags": [ - "readonly", + "write", "fast" ] }, - "ZREM": { - "summary": "Removes one or more members from a sorted set. Deletes the sorted set if all members were removed.", + "RPOPLPUSH": { + "summary": "Returns the last element of a list after removing and pushing it to another list. Deletes the list if the last element was popped.", "since": "1.2.0", - "group": "sorted-set", - "complexity": "O(M*log(N)) with N being the number of elements in the sorted set and M the number of elements to be removed.", - "history": [ - [ - "2.4.0", - "Accepts multiple elements." - ] - ], - "acl_categories": [ - "@write", - "@sortedset", - "@fast" + "group": "list", + "complexity": "O(1)", + "deprecated_since": "6.2.0", + "replaced_by": "`LMOVE` with the `RIGHT` and `LEFT` arguments", + "acl_categories": [ + "@write", + "@list", + "@slow" ], - "arity": -3, + "arity": 3, "key_specs": [ { "begin_search": { @@ -21994,39 +22738,67 @@ } }, "RW": true, + "access": true, "delete": true + }, + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "insert": true } ], "arguments": [ { - "name": "key", + "name": "source", "type": "key", - "display_text": "key", + "display_text": "source", "key_spec_index": 0 }, { - "name": "member", - "type": "string", - "display_text": "member", - "multiple": true + "name": "destination", + "type": "key", + "display_text": "destination", + "key_spec_index": 1 } ], "command_flags": [ "write", - "fast" + "denyoom" + ], + "doc_flags": [ + "deprecated" ] }, - "ZREMRANGEBYLEX": { - "summary": "Removes members in a sorted set within a lexicographical range. Deletes the sorted set if all members were removed.", - "since": "2.8.9", - "group": "sorted-set", - "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements removed by the operation.", + "RPUSH": { + "summary": "Appends one or more elements to a list. Creates the key if it doesn't exist.", + "since": "1.0.0", + "group": "list", + "complexity": "O(1) for each element added, so O(N) to add N elements when the command is called with multiple arguments.", + "history": [ + [ + "2.4.0", + "Accepts multiple `element` arguments." + ] + ], "acl_categories": [ "@write", - "@sortedset", - "@slow" + "@list", + "@fast" ], - "arity": 4, + "arity": -3, "key_specs": [ { "begin_search": { @@ -22044,7 +22816,7 @@ } }, "RW": true, - "delete": true + "insert": true } ], "arguments": [ @@ -22055,31 +22827,35 @@ "key_spec_index": 0 }, { - "name": "min", - "type": "string", - "display_text": "min" - }, - { - "name": "max", + "name": "element", "type": "string", - "display_text": "max" + "display_text": "element", + "multiple": true } ], "command_flags": [ - "write" + "write", + "denyoom", + "fast" ] }, - "ZREMRANGEBYRANK": { - "summary": "Removes members in a sorted set within a range of indexes. Deletes the sorted set if all members were removed.", - "since": "2.0.0", - "group": "sorted-set", - "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements removed by the operation.", + "RPUSHX": { + "summary": "Appends an element to a list only when the list exists.", + "since": "2.2.0", + "group": "list", + "complexity": "O(1) for each element added, so O(N) to add N elements when the command is called with multiple arguments.", + "history": [ + [ + "4.0.0", + "Accepts multiple `element` arguments." + ] + ], "acl_categories": [ "@write", - "@sortedset", - "@slow" + "@list", + "@fast" ], - "arity": 4, + "arity": -3, "key_specs": [ { "begin_search": { @@ -22097,7 +22873,7 @@ } }, "RW": true, - "delete": true + "insert": true } ], "arguments": [ @@ -22108,31 +22884,35 @@ "key_spec_index": 0 }, { - "name": "start", - "type": "integer", - "display_text": "start" - }, - { - "name": "stop", - "type": "integer", - "display_text": "stop" + "name": "element", + "type": "string", + "display_text": "element", + "multiple": true } ], "command_flags": [ - "write" + "write", + "denyoom", + "fast" ] }, - "ZREMRANGEBYSCORE": { - "summary": "Removes members in a sorted set within a range of scores. Deletes the sorted set if all members were removed.", - "since": "1.2.0", - "group": "sorted-set", - "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements removed by the operation.", + "SADD": { + "summary": "Adds one or more members to a set. Creates the key if it doesn't exist.", + "since": "1.0.0", + "group": "set", + "complexity": "O(1) for each element added, so O(N) to add N elements when the command is called with multiple arguments.", + "history": [ + [ + "2.4.0", + "Accepts multiple `member` arguments." + ] + ], "acl_categories": [ "@write", - "@sortedset", - "@slow" + "@set", + "@fast" ], - "arity": 4, + "arity": -3, "key_specs": [ { "begin_search": { @@ -22150,7 +22930,7 @@ } }, "RW": true, - "delete": true + "insert": true } ], "arguments": [ @@ -22161,33 +22941,102 @@ "key_spec_index": 0 }, { - "name": "min", - "type": "double", - "display_text": "min" + "name": "member", + "type": "string", + "display_text": "member", + "multiple": true + } + ], + "command_flags": [ + "write", + "denyoom", + "fast" + ] + }, + "SAVE": { + "summary": "Synchronously saves the database(s) to disk.", + "since": "1.0.0", + "group": "server", + "complexity": "O(N) where N is the total number of keys in all databases", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" + ], + "arity": 1, + "command_flags": [ + "admin", + "noscript", + "no_async_loading", + "no_multi" + ] + }, + "SCAN": { + "summary": "Iterates over the key names in the database.", + "since": "2.8.0", + "group": "generic", + "complexity": "O(1) for every call. O(N) for a complete iteration, including enough command calls for the cursor to return back to 0. N is the number of elements inside the collection.", + "history": [ + [ + "6.0.0", + "Added the `TYPE` subcommand." + ] + ], + "acl_categories": [ + "@keyspace", + "@read", + "@slow" + ], + "arity": -2, + "arguments": [ + { + "name": "cursor", + "type": "integer", + "display_text": "cursor" }, { - "name": "max", - "type": "double", - "display_text": "max" + "name": "pattern", + "type": "pattern", + "display_text": "pattern", + "token": "MATCH", + "optional": true + }, + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "COUNT", + "optional": true + }, + { + "name": "type", + "type": "string", + "display_text": "type", + "token": "TYPE", + "since": "6.0.0", + "optional": true } ], "command_flags": [ - "write" + "readonly" + ], + "hints": [ + "nondeterministic_output", + "request_policy:special", + "response_policy:special" ] }, - "ZREVRANGE": { - "summary": "Returns members in a sorted set within a range of indexes in reverse order.", - "since": "1.2.0", - "group": "sorted-set", - "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements returned.", - "deprecated_since": "6.2.0", - "replaced_by": "`ZRANGE` with the `REV` argument", + "SCARD": { + "summary": "Returns the number of members in a set.", + "since": "1.0.0", + "group": "set", + "complexity": "O(1)", "acl_categories": [ "@read", - "@sortedset", - "@slow" + "@set", + "@fast" ], - "arity": -4, + "arity": 2, "key_specs": [ { "begin_search": { @@ -22204,8 +23053,7 @@ "limit": 0 } }, - "RO": true, - "access": true + "RO": true } ], "arguments": [ @@ -22214,127 +23062,206 @@ "type": "key", "display_text": "key", "key_spec_index": 0 - }, - { - "name": "start", - "type": "integer", - "display_text": "start" - }, - { - "name": "stop", - "type": "integer", - "display_text": "stop" - }, - { - "name": "withscores", - "type": "pure-token", - "display_text": "withscores", - "token": "WITHSCORES", - "optional": true } ], "command_flags": [ - "readonly" - ], - "doc_flags": [ - "deprecated" + "readonly", + "fast" ] }, - "ZREVRANGEBYLEX": { - "summary": "Returns members in a sorted set within a lexicographical range in reverse order.", - "since": "2.8.9", - "group": "sorted-set", - "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements being returned. If M is constant (e.g. always asking for the first 10 elements with LIMIT), you can consider it O(log(N)).", - "deprecated_since": "6.2.0", - "replaced_by": "`ZRANGE` with the `REV` and `BYLEX` arguments", + "SCRIPT": { + "summary": "A container for Lua scripts management commands.", + "since": "2.6.0", + "group": "scripting", + "complexity": "Depends on subcommand.", "acl_categories": [ - "@read", - "@sortedset", "@slow" ], - "arity": -4, - "key_specs": [ + "arity": -2 + }, + "SCRIPT DEBUG": { + "summary": "Sets the debug mode of server-side Lua scripts.", + "since": "3.2.0", + "group": "scripting", + "complexity": "O(1)", + "acl_categories": [ + "@slow", + "@scripting" + ], + "arity": 3, + "arguments": [ { - "begin_search": { - "type": "index", - "spec": { - "index": 1 - } - }, - "find_keys": { - "type": "range", - "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 + "name": "mode", + "type": "oneof", + "arguments": [ + { + "name": "yes", + "type": "pure-token", + "display_text": "yes", + "token": "YES" + }, + { + "name": "sync", + "type": "pure-token", + "display_text": "sync", + "token": "SYNC" + }, + { + "name": "no", + "type": "pure-token", + "display_text": "no", + "token": "NO" } - }, - "RO": true, - "access": true + ] } ], + "command_flags": [ + "noscript" + ] + }, + "SCRIPT EXISTS": { + "summary": "Determines whether server-side Lua scripts exist in the script cache.", + "since": "2.6.0", + "group": "scripting", + "complexity": "O(N) with N being the number of scripts to check (so checking a single script is an O(1) operation).", + "acl_categories": [ + "@slow", + "@scripting" + ], + "arity": -3, "arguments": [ { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "max", - "type": "string", - "display_text": "max" - }, - { - "name": "min", + "name": "sha1", "type": "string", - "display_text": "min" - }, + "display_text": "sha1", + "multiple": true + } + ], + "command_flags": [ + "noscript" + ], + "hints": [ + "request_policy:all_shards", + "response_policy:agg_logical_and" + ] + }, + "SCRIPT FLUSH": { + "summary": "Removes all server-side Lua scripts from the script cache.", + "since": "2.6.0", + "group": "scripting", + "complexity": "O(N) with N being the number of scripts in cache", + "history": [ + [ + "6.2.0", + "Added the `ASYNC` and `SYNC` flushing mode modifiers." + ] + ], + "acl_categories": [ + "@slow", + "@scripting" + ], + "arity": -2, + "arguments": [ { - "name": "limit", - "type": "block", - "token": "LIMIT", + "name": "flush-type", + "type": "oneof", + "since": "6.2.0", "optional": true, "arguments": [ { - "name": "offset", - "type": "integer", - "display_text": "offset" + "name": "async", + "type": "pure-token", + "display_text": "async", + "token": "ASYNC" }, { - "name": "count", - "type": "integer", - "display_text": "count" + "name": "sync", + "type": "pure-token", + "display_text": "sync", + "token": "SYNC" } ] } ], "command_flags": [ - "readonly" + "noscript" ], - "doc_flags": [ - "deprecated" + "hints": [ + "request_policy:all_nodes", + "response_policy:all_succeeded" ] }, - "ZREVRANGEBYSCORE": { - "summary": "Returns members in a sorted set within a range of scores in reverse order.", - "since": "2.2.0", - "group": "sorted-set", - "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements being returned. If M is constant (e.g. always asking for the first 10 elements with LIMIT), you can consider it O(log(N)).", - "deprecated_since": "6.2.0", - "replaced_by": "`ZRANGE` with the `REV` and `BYSCORE` arguments", - "history": [ - [ - "2.1.6", - "`min` and `max` can be exclusive." - ] + "SCRIPT HELP": { + "summary": "Returns helpful text about the different subcommands.", + "since": "5.0.0", + "group": "scripting", + "complexity": "O(1)", + "acl_categories": [ + "@slow", + "@scripting" + ], + "arity": 2, + "command_flags": [ + "loading", + "stale" + ] + }, + "SCRIPT KILL": { + "summary": "Terminates a server-side Lua script during execution.", + "since": "2.6.0", + "group": "scripting", + "complexity": "O(1)", + "acl_categories": [ + "@slow", + "@scripting" + ], + "arity": 2, + "command_flags": [ + "noscript", + "allow_busy" + ], + "hints": [ + "request_policy:all_shards", + "response_policy:one_succeeded" + ] + }, + "SCRIPT LOAD": { + "summary": "Loads a server-side Lua script to the script cache.", + "since": "2.6.0", + "group": "scripting", + "complexity": "O(N) with N being the length in bytes of the script body.", + "acl_categories": [ + "@slow", + "@scripting" + ], + "arity": 3, + "arguments": [ + { + "name": "script", + "type": "string", + "display_text": "script" + } + ], + "command_flags": [ + "noscript", + "stale" ], + "hints": [ + "request_policy:all_nodes", + "response_policy:all_succeeded" + ] + }, + "SDIFF": { + "summary": "Returns the difference of multiple sets.", + "since": "1.0.0", + "group": "set", + "complexity": "O(N) where N is the total number of elements in all given sets.", "acl_categories": [ "@read", - "@sortedset", + "@set", "@slow" ], - "arity": -4, + "arity": -2, "key_specs": [ { "begin_search": { @@ -22346,7 +23273,7 @@ "find_keys": { "type": "range", "spec": { - "lastkey": 0, + "lastkey": -1, "keystep": 1, "limit": 0 } @@ -22360,66 +23287,26 @@ "name": "key", "type": "key", "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "max", - "type": "double", - "display_text": "max" - }, - { - "name": "min", - "type": "double", - "display_text": "min" - }, - { - "name": "withscores", - "type": "pure-token", - "display_text": "withscores", - "token": "WITHSCORES", - "optional": true - }, - { - "name": "limit", - "type": "block", - "token": "LIMIT", - "optional": true, - "arguments": [ - { - "name": "offset", - "type": "integer", - "display_text": "offset" - }, - { - "name": "count", - "type": "integer", - "display_text": "count" - } - ] + "key_spec_index": 0, + "multiple": true } ], "command_flags": [ "readonly" ], - "doc_flags": [ - "deprecated" + "hints": [ + "nondeterministic_output_order" ] }, - "ZREVRANK": { - "summary": "Returns the index of a member in a sorted set ordered by descending scores.", - "since": "2.0.0", - "group": "sorted-set", - "complexity": "O(log(N))", - "history": [ - [ - "7.2.0", - "Added the optional `WITHSCORE` argument." - ] - ], + "SDIFFCARD": { + "summary": "Returns the number of members of the difference between the first set and all successive sets.", + "since": "8.10.0", + "group": "set", + "complexity": "O(N) where N is the total number of elements in all given sets.", "acl_categories": [ "@read", - "@sortedset", - "@fast" + "@set", + "@slow" ], "arity": -3, "key_specs": [ @@ -22431,11 +23318,11 @@ } }, "find_keys": { - "type": "range", + "type": "keynum", "spec": { - "lastkey": 0, - "keystep": 1, - "limit": 0 + "keynumidx": 0, + "firstkey": 1, + "keystep": 1 } }, "RO": true, @@ -22443,38 +23330,39 @@ } ], "arguments": [ + { + "name": "numkeys", + "type": "integer", + "display_text": "numkeys" + }, { "name": "key", "type": "key", "display_text": "key", - "key_spec_index": 0 - }, - { - "name": "member", - "type": "string", - "display_text": "member" + "key_spec_index": 0, + "multiple": true }, { - "name": "withscore", - "type": "pure-token", - "display_text": "withscore", - "token": "WITHSCORE", + "name": "limit", + "type": "integer", + "display_text": "limit", + "token": "LIMIT", "optional": true } ], "command_flags": [ "readonly", - "fast" + "movablekeys" ] }, - "ZSCAN": { - "summary": "Iterates over members and scores of a sorted set.", - "since": "2.8.0", - "group": "sorted-set", - "complexity": "O(1) for every call. O(N) for a complete iteration, including enough command calls for the cursor to return back to 0. N is the number of elements inside the collection.", + "SDIFFSTORE": { + "summary": "Stores the difference of multiple sets in a key.", + "since": "1.0.0", + "group": "set", + "complexity": "O(N) where N is the total number of elements in all given sets.", "acl_categories": [ - "@read", - "@sortedset", + "@write", + "@set", "@slow" ], "arity": -3, @@ -22494,57 +23382,157 @@ "limit": 0 } }, + "OW": true, + "update": true + }, + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": -1, + "keystep": 1, + "limit": 0 + } + }, "RO": true, "access": true } ], "arguments": [ { - "name": "key", + "name": "destination", "type": "key", - "display_text": "key", + "display_text": "destination", "key_spec_index": 0 }, { - "name": "cursor", - "type": "integer", - "display_text": "cursor" - }, - { - "name": "pattern", - "type": "pattern", - "display_text": "pattern", - "token": "MATCH", - "optional": true - }, - { - "name": "count", - "type": "integer", - "display_text": "count", - "token": "COUNT", - "optional": true + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 1, + "multiple": true } ], "command_flags": [ - "readonly" + "write", + "denyoom" + ] + }, + "SEARCH.CLUSTERINFO": { + "group": "module", + "acl_categories": [ + "@search" + ], + "arity": -1, + "command_flags": [ + "readonly", + "module", + "noscript", + "loading" ], "hints": [ - "nondeterministic_output" + "dont_cache" + ], + "module": "search" + }, + "SEARCH.CLUSTERREFRESH": { + "group": "module", + "acl_categories": [ + "@search" + ], + "arity": -1, + "command_flags": [ + "readonly", + "module", + "noscript" + ], + "hints": [ + "dont_cache" + ], + "module": "search" + }, + "SEARCH.CLUSTERSET": { + "group": "module", + "acl_categories": [ + "@search" + ], + "arity": -1, + "command_flags": [ + "readonly", + "module", + "noscript", + "loading" + ], + "hints": [ + "dont_cache" + ], + "module": "search" + }, + "SELECT": { + "summary": "Changes the selected database.", + "since": "1.0.0", + "group": "connection", + "complexity": "O(1)", + "acl_categories": [ + "@fast", + "@connection" + ], + "arity": 2, + "arguments": [ + { + "name": "index", + "type": "integer", + "display_text": "index" + } + ], + "command_flags": [ + "loading", + "stale", + "fast" ] }, - "ZSCORE": { - "summary": "Returns the score of a member in a sorted set.", - "since": "1.2.0", - "group": "sorted-set", + "SET": { + "summary": "Sets the string value of a key, ignoring its type. The key is created if it doesn't exist.", + "since": "1.0.0", + "group": "string", "complexity": "O(1)", + "history": [ + [ + "2.6.12", + "Added the `EX`, `PX`, `NX` and `XX` options." + ], + [ + "6.0.0", + "Added the `KEEPTTL` option." + ], + [ + "6.2.0", + "Added the `GET`, `EXAT` and `PXAT` option." + ], + [ + "7.0.0", + "Allowed the `NX` and `GET` options to be used together." + ], + [ + "8.4.0", + "Added 'IFEQ', 'IFNE', 'IFDEQ', 'IFDNE' options." + ] + ], "acl_categories": [ - "@read", - "@sortedset", - "@fast" + "@write", + "@string", + "@slow" ], - "arity": 3, + "arity": -3, "key_specs": [ { + "notes": "RW and ACCESS due to the optional `GET` argument", "begin_search": { "type": "index", "spec": { @@ -22559,8 +23547,10 @@ "limit": 0 } }, - "RO": true, - "access": true + "RW": true, + "access": true, + "update": true, + "variable_flags": true } ], "arguments": [ @@ -22571,33 +23561,125 @@ "key_spec_index": 0 }, { - "name": "member", + "name": "value", "type": "string", - "display_text": "member" + "display_text": "value" + }, + { + "name": "condition", + "type": "oneof", + "since": "2.6.12", + "optional": true, + "arguments": [ + { + "name": "nx", + "type": "pure-token", + "display_text": "nx", + "token": "NX" + }, + { + "name": "xx", + "type": "pure-token", + "display_text": "xx", + "token": "XX" + }, + { + "name": "ifeq-value", + "type": "string", + "display_text": "ifeq-value", + "token": "IFEQ", + "since": "8.4.0" + }, + { + "name": "ifne-value", + "type": "string", + "display_text": "ifne-value", + "token": "IFNE", + "since": "8.4.0" + }, + { + "name": "ifdeq-digest", + "type": "string", + "display_text": "ifdeq-digest", + "token": "IFDEQ", + "since": "8.4.0" + }, + { + "name": "ifdne-digest", + "type": "string", + "display_text": "ifdne-digest", + "token": "IFDNE", + "since": "8.4.0" + } + ] + }, + { + "name": "get", + "type": "pure-token", + "display_text": "get", + "token": "GET", + "since": "6.2.0", + "optional": true + }, + { + "name": "expiration", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "seconds", + "type": "integer", + "display_text": "seconds", + "token": "EX", + "since": "2.6.12" + }, + { + "name": "milliseconds", + "type": "integer", + "display_text": "milliseconds", + "token": "PX", + "since": "2.6.12" + }, + { + "name": "unix-time-seconds", + "type": "unix-time", + "display_text": "unix-time-seconds", + "token": "EXAT", + "since": "6.2.0" + }, + { + "name": "unix-time-milliseconds", + "type": "unix-time", + "display_text": "unix-time-milliseconds", + "token": "PXAT", + "since": "6.2.0" + }, + { + "name": "keepttl", + "type": "pure-token", + "display_text": "keepttl", + "token": "KEEPTTL", + "since": "6.0.0" + } + ] } ], "command_flags": [ - "readonly", - "fast" + "write", + "denyoom" ] }, - "ZUNION": { - "summary": "Returns the union of multiple sorted sets.", - "since": "6.2.0", - "group": "sorted-set", - "complexity": "O(N)+O(M*log(M)) with N being the sum of the sizes of the input sorted sets, and M being the number of elements in the resulting sorted set.", - "history": [ - [ - "8.8.0", - "Added `COUNT` aggregate option." - ] - ], + "SETBIT": { + "summary": "Sets or clears the bit at offset of the string value. Creates the key if it doesn't exist.", + "since": "2.2.0", + "group": "bitmap", + "complexity": "O(1)", "acl_categories": [ - "@read", - "@sortedset", + "@write", + "@bitmap", "@slow" ], - "arity": -3, + "arity": 4, "key_specs": [ { "begin_search": { @@ -22607,101 +23689,54 @@ } }, "find_keys": { - "type": "keynum", + "type": "range", "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 + "lastkey": 0, + "keystep": 1, + "limit": 0 } }, - "RO": true, - "access": true + "RW": true, + "access": true, + "update": true } ], "arguments": [ - { - "name": "numkeys", - "type": "integer", - "display_text": "numkeys" - }, { "name": "key", "type": "key", "display_text": "key", - "key_spec_index": 0, - "multiple": true + "key_spec_index": 0 }, { - "name": "weight", + "name": "offset", "type": "integer", - "display_text": "weight", - "token": "WEIGHTS", - "optional": true, - "multiple": true - }, - { - "name": "aggregate", - "type": "oneof", - "token": "AGGREGATE", - "optional": true, - "arguments": [ - { - "name": "sum", - "type": "pure-token", - "display_text": "sum", - "token": "SUM" - }, - { - "name": "min", - "type": "pure-token", - "display_text": "min", - "token": "MIN" - }, - { - "name": "max", - "type": "pure-token", - "display_text": "max", - "token": "MAX" - }, - { - "name": "count", - "type": "pure-token", - "display_text": "count", - "token": "COUNT", - "since": "8.8.0" - } - ] + "display_text": "offset" }, { - "name": "withscores", - "type": "pure-token", - "display_text": "withscores", - "token": "WITHSCORES", - "optional": true + "name": "value", + "type": "integer", + "display_text": "value" } ], "command_flags": [ - "readonly", - "movablekeys" + "write", + "denyoom" ] }, - "ZUNIONSTORE": { - "summary": "Stores the union of multiple sorted sets in a key.", + "SETEX": { + "summary": "Sets the string value and expiration time of a key. Creates the key if it doesn't exist.", "since": "2.0.0", - "group": "sorted-set", - "complexity": "O(N)+O(M log(M)) with N being the sum of the sizes of the input sorted sets, and M being the number of elements in the resulting sorted set.", - "history": [ - [ - "8.8.0", - "Added `COUNT` aggregate option." - ] - ], + "group": "string", + "complexity": "O(1)", + "deprecated_since": "2.6.12", + "replaced_by": "`SET` with the `EX` argument", "acl_categories": [ "@write", - "@sortedset", + "@string", "@slow" ], - "arity": -4, + "arity": 4, "key_specs": [ { "begin_search": { @@ -22720,91 +23755,12831 @@ }, "OW": true, "update": true - }, - { - "begin_search": { - "type": "index", - "spec": { - "index": 2 - } - }, - "find_keys": { - "type": "keynum", - "spec": { - "keynumidx": 0, - "firstkey": 1, - "keystep": 1 - } - }, - "RO": true, - "access": true } ], "arguments": [ { - "name": "destination", + "name": "key", "type": "key", - "display_text": "destination", + "display_text": "key", "key_spec_index": 0 }, { - "name": "numkeys", + "name": "seconds", "type": "integer", - "display_text": "numkeys" - }, - { - "name": "key", - "type": "key", - "display_text": "key", - "key_spec_index": 1, - "multiple": true + "display_text": "seconds" }, { - "name": "weight", - "type": "integer", - "display_text": "weight", - "token": "WEIGHTS", - "optional": true, - "multiple": true + "name": "value", + "type": "string", + "display_text": "value" + } + ], + "command_flags": [ + "write", + "denyoom" + ], + "doc_flags": [ + "deprecated" + ] + }, + "SETNX": { + "summary": "Set the string value of a key only when the key doesn't exist.", + "since": "1.0.0", + "group": "string", + "complexity": "O(1)", + "deprecated_since": "2.6.12", + "replaced_by": "`SET` with the `NX` argument", + "acl_categories": [ + "@write", + "@string", + "@fast" + ], + "arity": 3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "OW": true, + "insert": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 }, { - "name": "aggregate", + "name": "value", + "type": "string", + "display_text": "value" + } + ], + "command_flags": [ + "write", + "denyoom", + "fast" + ], + "doc_flags": [ + "deprecated" + ] + }, + "SETRANGE": { + "summary": "Overwrites a part of a string value with another by an offset. Creates the key if it doesn't exist.", + "since": "2.2.0", + "group": "string", + "complexity": "O(1), not counting the time taken to copy the new string in place. Usually, this string is very small so the amortized complexity is O(1). Otherwise, complexity is O(M) with M being the length of the value argument.", + "acl_categories": [ + "@write", + "@string", + "@slow" + ], + "arity": 4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "offset", + "type": "integer", + "display_text": "offset" + }, + { + "name": "value", + "type": "string", + "display_text": "value" + } + ], + "command_flags": [ + "write", + "denyoom" + ] + }, + "SHUTDOWN": { + "summary": "Synchronously saves the database(s) to disk and shuts down the Redis server.", + "since": "1.0.0", + "group": "server", + "complexity": "O(N) when saving, where N is the total number of keys in all databases when saving data, otherwise O(1)", + "history": [ + [ + "7.0.0", + "Added the `NOW`, `FORCE` and `ABORT` modifiers." + ] + ], + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" + ], + "arity": -1, + "arguments": [ + { + "name": "save-selector", "type": "oneof", - "token": "AGGREGATE", "optional": true, "arguments": [ { - "name": "sum", - "type": "pure-token", - "display_text": "sum", - "token": "SUM" - }, - { - "name": "min", - "type": "pure-token", - "display_text": "min", - "token": "MIN" - }, - { - "name": "max", + "name": "nosave", "type": "pure-token", - "display_text": "max", - "token": "MAX" + "display_text": "nosave", + "token": "NOSAVE" }, { - "name": "count", + "name": "save", "type": "pure-token", - "display_text": "count", - "token": "COUNT", - "since": "8.8.0" + "display_text": "save", + "token": "SAVE" } ] + }, + { + "name": "now", + "type": "pure-token", + "display_text": "now", + "token": "NOW", + "since": "7.0.0", + "optional": true + }, + { + "name": "force", + "type": "pure-token", + "display_text": "force", + "token": "FORCE", + "since": "7.0.0", + "optional": true + }, + { + "name": "abort", + "type": "pure-token", + "display_text": "abort", + "token": "ABORT", + "since": "7.0.0", + "optional": true } ], "command_flags": [ - "write", - "denyoom", - "movablekeys" + "admin", + "noscript", + "loading", + "stale", + "no_multi", + "allow_busy" + ] + }, + "SINTER": { + "summary": "Returns the intersect of multiple sets.", + "since": "1.0.0", + "group": "set", + "complexity": "O(N*M) worst case where N is the cardinality of the smallest set and M is the number of sets.", + "acl_categories": [ + "@read", + "@set", + "@slow" + ], + "arity": -2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": -1, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "multiple": true + } + ], + "command_flags": [ + "readonly" + ], + "hints": [ + "nondeterministic_output_order" ] + }, + "SINTERCARD": { + "summary": "Returns the number of members of the intersect of multiple sets.", + "since": "7.0.0", + "group": "set", + "complexity": "O(N*M) worst case where N is the cardinality of the smallest set and M is the number of sets.", + "acl_categories": [ + "@read", + "@set", + "@slow" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "keynum", + "spec": { + "keynumidx": 0, + "firstkey": 1, + "keystep": 1 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "numkeys", + "type": "integer", + "display_text": "numkeys" + }, + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "multiple": true + }, + { + "name": "limit", + "type": "integer", + "display_text": "limit", + "token": "LIMIT", + "optional": true + } + ], + "command_flags": [ + "readonly", + "movablekeys" + ] + }, + "SINTERSTORE": { + "summary": "Stores the intersect of multiple sets in a key.", + "since": "1.0.0", + "group": "set", + "complexity": "O(N*M) worst case where N is the cardinality of the smallest set and M is the number of sets.", + "acl_categories": [ + "@write", + "@set", + "@slow" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "OW": true, + "update": true + }, + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": -1, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "destination", + "type": "key", + "display_text": "destination", + "key_spec_index": 0 + }, + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 1, + "multiple": true + } + ], + "command_flags": [ + "write", + "denyoom" + ] + }, + "SISMEMBER": { + "summary": "Determines whether a member belongs to a set.", + "since": "1.0.0", + "group": "set", + "complexity": "O(1)", + "acl_categories": [ + "@read", + "@set", + "@fast" + ], + "arity": 3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "member", + "type": "string", + "display_text": "member" + } + ], + "command_flags": [ + "readonly", + "fast" + ] + }, + "SLAVEOF": { + "summary": "Sets a Redis server as a replica of another, or promotes it to being a master.", + "since": "1.0.0", + "group": "server", + "complexity": "O(1)", + "deprecated_since": "5.0.0", + "replaced_by": "`REPLICAOF`", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" + ], + "arity": 3, + "arguments": [ + { + "name": "args", + "type": "oneof", + "arguments": [ + { + "name": "host-port", + "type": "block", + "arguments": [ + { + "name": "host", + "type": "string", + "display_text": "host" + }, + { + "name": "port", + "type": "integer", + "display_text": "port" + } + ] + }, + { + "name": "no-one", + "type": "block", + "arguments": [ + { + "name": "no", + "type": "pure-token", + "display_text": "no", + "token": "NO" + }, + { + "name": "one", + "type": "pure-token", + "display_text": "one", + "token": "ONE" + } + ] + } + ] + } + ], + "command_flags": [ + "admin", + "noscript", + "stale", + "no_async_loading" + ], + "doc_flags": [ + "deprecated" + ] + }, + "SLOWLOG": { + "summary": "A container for slow log commands.", + "since": "2.2.12", + "group": "server", + "complexity": "Depends on subcommand.", + "acl_categories": [ + "@slow" + ], + "arity": -2 + }, + "SLOWLOG GET": { + "summary": "Returns the slow log's entries.", + "since": "2.2.12", + "group": "server", + "complexity": "O(N) where N is the number of entries returned", + "history": [ + [ + "4.0.0", + "Added client IP address, port and name to the reply." + ], + [ + "8.10.0", + "Added original command argument count to the reply." + ] + ], + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" + ], + "arity": -2, + "arguments": [ + { + "name": "count", + "type": "integer", + "display_text": "count", + "optional": true + } + ], + "command_flags": [ + "admin", + "loading", + "stale" + ], + "hints": [ + "request_policy:all_nodes", + "nondeterministic_output" + ] + }, + "SLOWLOG HELP": { + "summary": "Show helpful text about the different subcommands", + "since": "6.2.0", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@slow" + ], + "arity": 2, + "command_flags": [ + "loading", + "stale" + ] + }, + "SLOWLOG LEN": { + "summary": "Returns the number of entries in the slow log.", + "since": "2.2.12", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" + ], + "arity": 2, + "command_flags": [ + "admin", + "loading", + "stale" + ], + "hints": [ + "request_policy:all_nodes", + "response_policy:agg_sum", + "nondeterministic_output" + ] + }, + "SLOWLOG RESET": { + "summary": "Clears all entries from the slow log.", + "since": "2.2.12", + "group": "server", + "complexity": "O(N) where N is the number of entries in the slowlog", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" + ], + "arity": 2, + "command_flags": [ + "admin", + "loading", + "stale" + ], + "hints": [ + "request_policy:all_nodes", + "response_policy:all_succeeded" + ] + }, + "SMEMBERS": { + "summary": "Returns all members of a set.", + "since": "1.0.0", + "group": "set", + "complexity": "O(N) where N is the set cardinality.", + "acl_categories": [ + "@read", + "@set", + "@slow" + ], + "arity": 2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + } + ], + "command_flags": [ + "readonly" + ], + "hints": [ + "nondeterministic_output_order" + ] + }, + "SMISMEMBER": { + "summary": "Determines whether multiple members belong to a set.", + "since": "6.2.0", + "group": "set", + "complexity": "O(N) where N is the number of elements being checked for membership", + "acl_categories": [ + "@read", + "@set", + "@fast" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "member", + "type": "string", + "display_text": "member", + "multiple": true + } + ], + "command_flags": [ + "readonly", + "fast" + ] + }, + "SMOVE": { + "summary": "Moves a member from one set to another.", + "since": "1.0.0", + "group": "set", + "complexity": "O(1)", + "acl_categories": [ + "@write", + "@set", + "@fast" + ], + "arity": 4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "delete": true + }, + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "insert": true + } + ], + "arguments": [ + { + "name": "source", + "type": "key", + "display_text": "source", + "key_spec_index": 0 + }, + { + "name": "destination", + "type": "key", + "display_text": "destination", + "key_spec_index": 1 + }, + { + "name": "member", + "type": "string", + "display_text": "member" + } + ], + "command_flags": [ + "write", + "fast" + ] + }, + "SORT": { + "summary": "Sorts the elements in a list, a set, or a sorted set, optionally storing the result.", + "since": "1.0.0", + "group": "generic", + "complexity": "O(N+M*log(M)) where N is the number of elements in the list or set to sort, and M the number of returned elements. When the elements are not sorted, complexity is O(N).", + "acl_categories": [ + "@write", + "@set", + "@sortedset", + "@list", + "@slow", + "@dangerous" + ], + "arity": -2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + }, + { + "notes": "For the optional BY/GET keyword. It is marked 'unknown' because the key names derive from the content of the key we sort", + "begin_search": { + "type": "unknown", + "spec": {} + }, + "find_keys": { + "type": "unknown", + "spec": {} + }, + "RO": true, + "access": true + }, + { + "notes": "For the optional STORE keyword. It is marked 'unknown' because the keyword can appear anywhere in the argument array", + "begin_search": { + "type": "unknown", + "spec": {} + }, + "find_keys": { + "type": "unknown", + "spec": {} + }, + "OW": true, + "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "by-pattern", + "type": "pattern", + "display_text": "pattern", + "key_spec_index": 1, + "token": "BY", + "optional": true + }, + { + "name": "limit", + "type": "block", + "token": "LIMIT", + "optional": true, + "arguments": [ + { + "name": "offset", + "type": "integer", + "display_text": "offset" + }, + { + "name": "count", + "type": "integer", + "display_text": "count" + } + ] + }, + { + "name": "get-pattern", + "type": "pattern", + "display_text": "pattern", + "key_spec_index": 1, + "token": "GET", + "optional": true, + "multiple": true, + "multiple_token": true + }, + { + "name": "order", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "asc", + "type": "pure-token", + "display_text": "asc", + "token": "ASC" + }, + { + "name": "desc", + "type": "pure-token", + "display_text": "desc", + "token": "DESC" + } + ] + }, + { + "name": "sorting", + "type": "pure-token", + "display_text": "sorting", + "token": "ALPHA", + "optional": true + }, + { + "name": "destination", + "type": "key", + "display_text": "destination", + "key_spec_index": 2, + "token": "STORE", + "optional": true + } + ], + "command_flags": [ + "write", + "denyoom", + "movablekeys" + ] + }, + "SORT_RO": { + "summary": "Returns the sorted elements of a list, a set, or a sorted set.", + "since": "7.0.0", + "group": "generic", + "complexity": "O(N+M*log(M)) where N is the number of elements in the list or set to sort, and M the number of returned elements. When the elements are not sorted, complexity is O(N).", + "acl_categories": [ + "@read", + "@set", + "@sortedset", + "@list", + "@slow", + "@dangerous" + ], + "arity": -2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + }, + { + "notes": "For the optional BY/GET keyword. It is marked 'unknown' because the key names derive from the content of the key we sort", + "begin_search": { + "type": "unknown", + "spec": {} + }, + "find_keys": { + "type": "unknown", + "spec": {} + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "by-pattern", + "type": "pattern", + "display_text": "pattern", + "key_spec_index": 1, + "token": "BY", + "optional": true + }, + { + "name": "limit", + "type": "block", + "token": "LIMIT", + "optional": true, + "arguments": [ + { + "name": "offset", + "type": "integer", + "display_text": "offset" + }, + { + "name": "count", + "type": "integer", + "display_text": "count" + } + ] + }, + { + "name": "get-pattern", + "type": "pattern", + "display_text": "pattern", + "key_spec_index": 1, + "token": "GET", + "optional": true, + "multiple": true, + "multiple_token": true + }, + { + "name": "order", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "asc", + "type": "pure-token", + "display_text": "asc", + "token": "ASC" + }, + { + "name": "desc", + "type": "pure-token", + "display_text": "desc", + "token": "DESC" + } + ] + }, + { + "name": "sorting", + "type": "pure-token", + "display_text": "sorting", + "token": "ALPHA", + "optional": true + } + ], + "command_flags": [ + "readonly", + "movablekeys" + ] + }, + "SPOP": { + "summary": "Returns one or more random members from a set after removing them. Deletes the set if the last member was popped.", + "since": "1.0.0", + "group": "set", + "complexity": "Without the count argument O(1), otherwise O(N) where N is the value of the passed count.", + "history": [ + [ + "3.2.0", + "Added the `count` argument." + ] + ], + "acl_categories": [ + "@write", + "@set", + "@fast" + ], + "arity": -2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "delete": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "count", + "type": "integer", + "display_text": "count", + "since": "3.2.0", + "optional": true + } + ], + "command_flags": [ + "write", + "fast" + ], + "hints": [ + "nondeterministic_output" + ] + }, + "SPUBLISH": { + "summary": "Post a message to a shard channel", + "since": "7.0.0", + "group": "pubsub", + "complexity": "O(N) where N is the number of clients subscribed to the receiving shard channel.", + "acl_categories": [ + "@pubsub", + "@fast" + ], + "arity": 3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "not_key": true + } + ], + "arguments": [ + { + "name": "shardchannel", + "type": "string", + "display_text": "shardchannel" + }, + { + "name": "message", + "type": "string", + "display_text": "message" + } + ], + "command_flags": [ + "pubsub", + "loading", + "stale", + "fast" + ] + }, + "SRANDMEMBER": { + "summary": "Get one or multiple random members from a set", + "since": "1.0.0", + "group": "set", + "complexity": "Without the count argument O(1), otherwise O(N) where N is the absolute value of the passed count.", + "history": [ + [ + "2.6.0", + "Added the optional `count` argument." + ] + ], + "acl_categories": [ + "@read", + "@set", + "@slow" + ], + "arity": -2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "count", + "type": "integer", + "display_text": "count", + "since": "2.6.0", + "optional": true + } + ], + "command_flags": [ + "readonly" + ], + "hints": [ + "nondeterministic_output" + ] + }, + "SREM": { + "summary": "Removes one or more members from a set. Deletes the set if the last member was removed.", + "since": "1.0.0", + "group": "set", + "complexity": "O(N) where N is the number of members to be removed.", + "history": [ + [ + "2.4.0", + "Accepts multiple `member` arguments." + ] + ], + "acl_categories": [ + "@write", + "@set", + "@fast" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "delete": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "member", + "type": "string", + "display_text": "member", + "multiple": true + } + ], + "command_flags": [ + "write", + "fast" + ] + }, + "SSCAN": { + "summary": "Iterates over members of a set.", + "since": "2.8.0", + "group": "set", + "complexity": "O(1) for every call. O(N) for a complete iteration, including enough command calls for the cursor to return back to 0. N is the number of elements inside the collection.", + "acl_categories": [ + "@read", + "@set", + "@slow" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "cursor", + "type": "integer", + "display_text": "cursor" + }, + { + "name": "pattern", + "type": "pattern", + "display_text": "pattern", + "token": "MATCH", + "optional": true + }, + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "COUNT", + "optional": true + } + ], + "command_flags": [ + "readonly" + ], + "hints": [ + "nondeterministic_output" + ] + }, + "SSUBSCRIBE": { + "summary": "Listens for messages published to shard channels.", + "since": "7.0.0", + "group": "pubsub", + "complexity": "O(N) where N is the number of shard channels to subscribe to.", + "acl_categories": [ + "@pubsub", + "@slow" + ], + "arity": -2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": -1, + "keystep": 1, + "limit": 0 + } + }, + "not_key": true + } + ], + "arguments": [ + { + "name": "shardchannel", + "type": "string", + "display_text": "shardchannel", + "multiple": true + } + ], + "command_flags": [ + "denyoom", + "pubsub", + "noscript", + "loading", + "stale" + ] + }, + "STRLEN": { + "summary": "Returns the length of a string value.", + "since": "2.2.0", + "group": "string", + "complexity": "O(1)", + "acl_categories": [ + "@read", + "@string", + "@fast" + ], + "arity": 2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + } + ], + "command_flags": [ + "readonly", + "fast" + ] + }, + "SUBSCRIBE": { + "summary": "Listens for messages published to channels.", + "since": "2.0.0", + "group": "pubsub", + "complexity": "O(N) where N is the number of channels to subscribe to.", + "acl_categories": [ + "@pubsub", + "@slow" + ], + "arity": -2, + "arguments": [ + { + "name": "channel", + "type": "string", + "display_text": "channel", + "multiple": true + } + ], + "command_flags": [ + "denyoom", + "pubsub", + "noscript", + "loading", + "stale" + ] + }, + "SUBSTR": { + "summary": "Returns a substring from a string value.", + "since": "1.0.0", + "group": "string", + "complexity": "O(N) where N is the length of the returned string. The complexity is ultimately determined by the returned length, but because creating a substring from an existing string is very cheap, it can be considered O(1) for small strings.", + "deprecated_since": "2.0.0", + "replaced_by": "`GETRANGE`", + "acl_categories": [ + "@read", + "@string", + "@slow" + ], + "arity": 4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "start", + "type": "integer", + "display_text": "start" + }, + { + "name": "end", + "type": "integer", + "display_text": "end" + } + ], + "command_flags": [ + "readonly" + ], + "doc_flags": [ + "deprecated" + ] + }, + "SUNION": { + "summary": "Returns the union of multiple sets.", + "since": "1.0.0", + "group": "set", + "complexity": "O(N) where N is the total number of elements in all given sets.", + "acl_categories": [ + "@read", + "@set", + "@slow" + ], + "arity": -2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": -1, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "multiple": true + } + ], + "command_flags": [ + "readonly" + ], + "hints": [ + "nondeterministic_output_order" + ] + }, + "SUNIONCARD": { + "summary": "Returns the number of members of the union of multiple sets.", + "since": "8.10.0", + "group": "set", + "complexity": "O(N) where N is the total number of elements in all given sets.", + "acl_categories": [ + "@read", + "@set", + "@slow" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "keynum", + "spec": { + "keynumidx": 0, + "firstkey": 1, + "keystep": 1 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "numkeys", + "type": "integer", + "display_text": "numkeys" + }, + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "multiple": true + }, + { + "name": "approx", + "type": "pure-token", + "display_text": "approx", + "token": "APPROX", + "optional": true + }, + { + "name": "limit", + "type": "integer", + "display_text": "limit", + "token": "LIMIT", + "optional": true + } + ], + "command_flags": [ + "readonly", + "movablekeys" + ] + }, + "SUNIONSTORE": { + "summary": "Stores the union of multiple sets in a key.", + "since": "1.0.0", + "group": "set", + "complexity": "O(N) where N is the total number of elements in all given sets.", + "acl_categories": [ + "@write", + "@set", + "@slow" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "OW": true, + "update": true + }, + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": -1, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "destination", + "type": "key", + "display_text": "destination", + "key_spec_index": 0 + }, + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 1, + "multiple": true + } + ], + "command_flags": [ + "write", + "denyoom" + ] + }, + "SUNSUBSCRIBE": { + "summary": "Stops listening to messages posted to shard channels.", + "since": "7.0.0", + "group": "pubsub", + "complexity": "O(N) where N is the number of shard channels to unsubscribe.", + "acl_categories": [ + "@pubsub", + "@slow" + ], + "arity": -1, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": -1, + "keystep": 1, + "limit": 0 + } + }, + "not_key": true + } + ], + "arguments": [ + { + "name": "shardchannel", + "type": "string", + "display_text": "shardchannel", + "optional": true, + "multiple": true + } + ], + "command_flags": [ + "pubsub", + "noscript", + "loading", + "stale" + ] + }, + "SWAPDB": { + "summary": "Swaps two Redis databases.", + "since": "4.0.0", + "group": "server", + "complexity": "O(N) where N is the count of clients watching or blocking on keys from both databases.", + "acl_categories": [ + "@keyspace", + "@write", + "@fast", + "@dangerous" + ], + "arity": 3, + "arguments": [ + { + "name": "index1", + "type": "integer", + "display_text": "index1" + }, + { + "name": "index2", + "type": "integer", + "display_text": "index2" + } + ], + "command_flags": [ + "write", + "fast" + ] + }, + "SYNC": { + "summary": "An internal command used in replication.", + "since": "1.0.0", + "group": "server", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous" + ], + "arity": 1, + "command_flags": [ + "admin", + "noscript", + "no_async_loading", + "no_multi" + ] + }, + "TDIGEST.ADD": { + "summary": "Adds one or more observations to a t-digest sketch", + "since": "2.4.0", + "group": "module", + "complexity": "O(N), where N is the number of samples to add", + "acl_categories": [ + "@write", + "@tdigest" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "value", + "type": "double", + "display_text": "value", + "multiple": true + } + ], + "command_flags": [ + "write", + "denyoom", + "module" + ], + "module": "bf" + }, + "TDIGEST.BYRANK": { + "summary": "Returns, for each input rank, an estimation of the value (floating-point) with that rank", + "since": "2.4.0", + "group": "module", + "complexity": "O(N) where N is the number of ranks specified", + "acl_categories": [ + "@read", + "@fast", + "@tdigest" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "rank", + "type": "double", + "display_text": "rank", + "multiple": true + } + ], + "command_flags": [ + "readonly", + "module" + ], + "module": "bf" + }, + "TDIGEST.BYREVRANK": { + "summary": "Returns, for each input reverse rank, an estimation of the value (floating-point) with that reverse rank", + "since": "2.4.0", + "group": "module", + "complexity": "O(N) where N is the number of reverse ranks specified.", + "acl_categories": [ + "@read", + "@fast", + "@tdigest" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "reverse_rank", + "type": "double", + "display_text": "reverse_rank", + "multiple": true + } + ], + "command_flags": [ + "readonly", + "module" + ], + "module": "bf" + }, + "TDIGEST.CDF": { + "summary": "Returns, for each input value, an estimation of the floating-point fraction of (observations smaller than the given value + half the observations equal to the given value). Multiple fractions can be retrieved in a single call.", + "since": "2.4.0", + "group": "module", + "complexity": "O(N) where N is the number of values specified.", + "acl_categories": [ + "@read", + "@fast", + "@tdigest" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "value", + "type": "double", + "display_text": "value", + "multiple": true + } + ], + "command_flags": [ + "readonly", + "module" + ], + "module": "bf" + }, + "TDIGEST.CREATE": { + "summary": "Allocates memory and initializes a new t-digest sketch", + "since": "2.4.0", + "group": "module", + "complexity": "O(1)", + "acl_categories": [ + "@write", + "@fast", + "@tdigest" + ], + "arity": -2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "compression_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "compression_token", + "type": "pure-token", + "display_text": "compression_token", + "token": "COMPRESSION" + }, + { + "name": "compression", + "type": "integer", + "display_text": "compression" + } + ] + } + ], + "command_flags": [ + "write", + "denyoom", + "module" + ], + "module": "bf" + }, + "TDIGEST.INFO": { + "summary": "Returns information and statistics about a t-digest sketch", + "since": "2.4.0", + "group": "module", + "complexity": "O(1)", + "acl_categories": [ + "@read", + "@fast", + "@tdigest" + ], + "arity": 2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + } + ], + "command_flags": [ + "readonly", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "bf" + }, + "TDIGEST.MAX": { + "summary": "Returns the maximum observation value from a t-digest sketch", + "since": "2.4.0", + "group": "module", + "complexity": "O(1)", + "acl_categories": [ + "@read", + "@fast", + "@tdigest" + ], + "arity": 2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + } + ], + "command_flags": [ + "readonly", + "module" + ], + "module": "bf" + }, + "TDIGEST.MERGE": { + "summary": "Merges multiple t-digest sketches into a single sketch", + "since": "2.4.0", + "group": "module", + "complexity": "O(N*K), where N is the number of centroids and K being the number of input sketches", + "acl_categories": [ + "@write", + "@tdigest" + ], + "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true + }, + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "keynum", + "spec": { + "keynumidx": 0, + "firstkey": 1, + "keystep": 1 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "destination-key", + "type": "key", + "display_text": "destination-key", + "key_spec_index": 0 + }, + { + "name": "numkeys", + "type": "integer", + "display_text": "numkeys" + }, + { + "name": "source-key", + "type": "key", + "display_text": "source-key", + "key_spec_index": 1, + "multiple": true + }, + { + "name": "compression_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "compression_token", + "type": "pure-token", + "display_text": "compression_token", + "token": "COMPRESSION" + }, + { + "name": "compression", + "type": "integer", + "display_text": "compression" + } + ] + }, + { + "name": "override", + "type": "pure-token", + "display_text": "override", + "token": "OVERRIDE", + "optional": true + } + ], + "command_flags": [ + "write", + "denyoom", + "module", + "movablekeys" + ], + "module": "bf" + }, + "TDIGEST.MIN": { + "summary": "Returns the minimum observation value from a t-digest sketch", + "since": "2.4.0", + "group": "module", + "complexity": "O(1)", + "acl_categories": [ + "@read", + "@fast", + "@tdigest" + ], + "arity": 2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + } + ], + "command_flags": [ + "readonly", + "module" + ], + "module": "bf" + }, + "TDIGEST.QUANTILE": { + "summary": "Returns, for each input fraction, an estimation of the value (floating point) that is smaller than the given fraction of observations", + "since": "2.4.0", + "group": "module", + "complexity": "O(N) where N is the number of quantiles specified.", + "acl_categories": [ + "@read", + "@fast", + "@tdigest" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "quantile", + "type": "double", + "display_text": "quantile", + "multiple": true + } + ], + "command_flags": [ + "readonly", + "module" + ], + "module": "bf" + }, + "TDIGEST.RANK": { + "summary": "Returns, for each input value (floating-point), the estimated rank of the value (the number of observations in the sketch that are smaller than the value + half the number of observations that are equal to the value)", + "since": "2.4.0", + "group": "module", + "complexity": "O(N) where N is the number of values specified.", + "acl_categories": [ + "@read", + "@fast", + "@tdigest" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "value", + "type": "double", + "display_text": "value", + "multiple": true + } + ], + "command_flags": [ + "readonly", + "module" + ], + "module": "bf" + }, + "TDIGEST.RESET": { + "summary": "Resets a t-digest sketch: empty the sketch and re-initializes it.", + "since": "2.4.0", + "group": "module", + "complexity": "O(1)", + "acl_categories": [ + "@write", + "@fast", + "@tdigest" + ], + "arity": 2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + } + ], + "command_flags": [ + "write", + "denyoom", + "module" + ], + "module": "bf" + }, + "TDIGEST.REVRANK": { + "summary": "Returns, for each input value (floating-point), the estimated reverse rank of the value (the number of observations in the sketch that are larger than the value + half the number of observations that are equal to the value)", + "since": "2.4.0", + "group": "module", + "complexity": "O(N) where N is the number of values specified.", + "acl_categories": [ + "@read", + "@fast", + "@tdigest" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "value", + "type": "double", + "display_text": "value", + "multiple": true + } + ], + "command_flags": [ + "readonly", + "module" + ], + "module": "bf" + }, + "TDIGEST.TRIMMED_MEAN": { + "summary": "Returns an estimation of the mean value from the sketch, excluding observation values outside the low and high cutoff quantiles", + "since": "2.4.0", + "group": "module", + "complexity": "O(N) where N is the number of centroids", + "acl_categories": [ + "@read", + "@tdigest" + ], + "arity": 4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "low_cut_quantile", + "type": "double", + "display_text": "low_cut_quantile" + }, + { + "name": "high_cut_quantile", + "type": "double", + "display_text": "high_cut_quantile" + } + ], + "command_flags": [ + "readonly", + "module" + ], + "module": "bf" + }, + "TIME": { + "summary": "Returns the server time.", + "since": "2.6.0", + "group": "server", + "complexity": "O(1)", + "acl_categories": [ + "@fast" + ], + "arity": 1, + "command_flags": [ + "loading", + "stale", + "fast" + ], + "hints": [ + "nondeterministic_output" + ] + }, + "TIMESERIES.CLUSTERSET": { + "group": "module", + "arity": -1, + "command_flags": [ + "readonly", + "module", + "noscript" + ], + "module": "timeseries" + }, + "TIMESERIES.REFRESHCLUSTER": { + "group": "module", + "arity": -1, + "command_flags": [ + "readonly", + "module", + "noscript" + ], + "module": "timeseries" + }, + "TOPK.ADD": { + "summary": "Adds an item to a Top-k sketch. Multiple items can be added at the same time.", + "since": "2.0.0", + "group": "module", + "complexity": "O(n * k) where n is the number of items and k is the depth", + "acl_categories": [ + "@write", + "@topk" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "item", + "type": "string", + "display_text": "item", + "multiple": true + } + ], + "command_flags": [ + "write", + "denyoom", + "module" + ], + "module": "bf" + }, + "TOPK.COUNT": { + "summary": "Return the count for one or more items are in a sketch", + "since": "2.0.0", + "group": "module", + "complexity": "O(n) where n is the number of items", + "history": [ + [ + "2.4.0", + "As of Bloom version 2.4, this command is regarded as deprecated. The count value is not a representative of the number of appearances of an item" + ] + ], + "acl_categories": [ + "@read", + "@topk" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "item", + "type": "string", + "display_text": "item", + "multiple": true + } + ], + "command_flags": [ + "readonly", + "module" + ], + "module": "bf" + }, + "TOPK.INCRBY": { + "summary": "Increases the count of one or more items by increment", + "since": "2.0.0", + "group": "module", + "complexity": "O(n * k * incr) where n is the number of items, k is the depth and incr is the increment", + "acl_categories": [ + "@write", + "@topk" + ], + "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "item_increment", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "item", + "type": "string", + "display_text": "item" + }, + { + "name": "increment", + "type": "integer", + "display_text": "increment" + } + ] + } + ], + "command_flags": [ + "write", + "denyoom", + "module" + ], + "module": "bf" + }, + "TOPK.INFO": { + "summary": "Returns information about a sketch", + "since": "2.0.0", + "group": "module", + "complexity": "O(1)", + "acl_categories": [ + "@read", + "@fast", + "@topk" + ], + "arity": 2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + } + ], + "command_flags": [ + "readonly", + "module" + ], + "module": "bf" + }, + "TOPK.LIST": { + "summary": "Return the full list of items in Top-K sketch.", + "since": "2.0.0", + "group": "module", + "complexity": "O(k*log(k)) where k is the value of top-k", + "acl_categories": [ + "@read", + "@topk" + ], + "arity": -2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "withcount", + "type": "pure-token", + "display_text": "withcount", + "token": "WITHCOUNT", + "optional": true + } + ], + "command_flags": [ + "readonly", + "module" + ], + "module": "bf" + }, + "TOPK.QUERY": { + "summary": "Checks whether one or more items are in a sketch", + "since": "2.0.0", + "group": "module", + "complexity": "O(n) where n is the number of items", + "acl_categories": [ + "@read", + "@topk" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "item", + "type": "string", + "display_text": "item", + "multiple": true + } + ], + "command_flags": [ + "readonly", + "module" + ], + "module": "bf" + }, + "TOPK.RESERVE": { + "summary": "Initializes a Top-K sketch with specified parameters", + "since": "2.0.0", + "group": "module", + "complexity": "O(1)", + "acl_categories": [ + "@write", + "@fast", + "@topk" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "topk", + "type": "integer", + "display_text": "topk" + }, + { + "name": "params", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "width", + "type": "integer", + "display_text": "width" + }, + { + "name": "depth", + "type": "integer", + "display_text": "depth" + }, + { + "name": "decay", + "type": "double", + "display_text": "decay" + } + ] + } + ], + "command_flags": [ + "write", + "denyoom", + "module" + ], + "module": "bf" + }, + "TOUCH": { + "summary": "Returns the number of existing keys out of those specified after updating the time they were last accessed.", + "since": "3.2.1", + "group": "generic", + "complexity": "O(N) where N is the number of keys that will be touched.", + "acl_categories": [ + "@keyspace", + "@read", + "@fast" + ], + "arity": -2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": -1, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "multiple": true + } + ], + "command_flags": [ + "readonly", + "fast" + ], + "hints": [ + "request_policy:multi_shard", + "response_policy:agg_sum" + ] + }, + "TRIMSLOTS": { + "summary": "Trim the keys that belong to specified slots.", + "since": "8.4.0", + "group": "server", + "complexity": "O(N) where N is the total number of keys in all databases", + "acl_categories": [ + "@keyspace", + "@write", + "@slow", + "@dangerous" + ], + "arity": -5, + "arguments": [ + { + "name": "ranges", + "type": "block", + "token": "RANGES", + "arguments": [ + { + "name": "numranges", + "type": "integer", + "display_text": "numranges" + }, + { + "name": "slots", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "startslot", + "type": "integer", + "display_text": "startslot" + }, + { + "name": "endslot", + "type": "integer", + "display_text": "endslot" + } + ] + } + ] + } + ], + "command_flags": [ + "write" + ] + }, + "TS.ADD": { + "summary": "Append a sample to a time series", + "since": "1.0.0", + "group": "module", + "complexity": "O(M) where M is the number of compaction rules or O(1) with no compaction", + "acl_categories": [ + "@write", + "@timeseries" + ], + "arity": -4, + "key_specs": [ + { + "notes": "", + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "insert": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "timestamp", + "type": "string", + "display_text": "timestamp" + }, + { + "name": "value", + "type": "double", + "display_text": "value" + }, + { + "name": "RETENTION", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "retentionPeriod", + "type": "integer", + "display_text": "retentionPeriod", + "token": "RETENTION" + } + ] + }, + { + "name": "ENCODING", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "ENCODING", + "type": "pure-token", + "display_text": "ENCODING", + "token": "ENCODING" + }, + { + "name": "enc", + "type": "oneof", + "arguments": [ + { + "name": "COMPRESSED", + "type": "pure-token", + "display_text": "COMPRESSED", + "token": "COMPRESSED" + }, + { + "name": "UNCOMPRESSED", + "type": "pure-token", + "display_text": "UNCOMPRESSED", + "token": "UNCOMPRESSED" + } + ] + } + ] + }, + { + "name": "CHUNK_SIZE", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "size", + "type": "integer", + "display_text": "size", + "token": "CHUNK_SIZE" + } + ] + }, + { + "name": "DUPLICATE_POLICY", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "DUPLICATE_POLICY", + "type": "pure-token", + "display_text": "DUPLICATE_POLICY", + "token": "DUPLICATE_POLICY" + }, + { + "name": "policy", + "type": "oneof", + "arguments": [ + { + "name": "BLOCK", + "type": "pure-token", + "display_text": "BLOCK", + "token": "BLOCK" + }, + { + "name": "FIRST", + "type": "pure-token", + "display_text": "FIRST", + "token": "FIRST" + }, + { + "name": "LAST", + "type": "pure-token", + "display_text": "LAST", + "token": "LAST" + }, + { + "name": "MIN", + "type": "pure-token", + "display_text": "MIN", + "token": "MIN" + }, + { + "name": "MAX", + "type": "pure-token", + "display_text": "MAX", + "token": "MAX" + }, + { + "name": "SUM", + "type": "pure-token", + "display_text": "SUM", + "token": "SUM" + } + ] + } + ] + }, + { + "name": "ON_DUPLICATE", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "ON_DUPLICATE", + "type": "pure-token", + "display_text": "ON_DUPLICATE", + "token": "ON_DUPLICATE" + }, + { + "name": "policy_ovr", + "type": "oneof", + "arguments": [ + { + "name": "BLOCK", + "type": "pure-token", + "display_text": "BLOCK", + "token": "BLOCK" + }, + { + "name": "FIRST", + "type": "pure-token", + "display_text": "FIRST", + "token": "FIRST" + }, + { + "name": "LAST", + "type": "pure-token", + "display_text": "LAST", + "token": "LAST" + }, + { + "name": "MIN", + "type": "pure-token", + "display_text": "MIN", + "token": "MIN" + }, + { + "name": "MAX", + "type": "pure-token", + "display_text": "MAX", + "token": "MAX" + }, + { + "name": "SUM", + "type": "pure-token", + "display_text": "SUM", + "token": "SUM" + } + ] + } + ] + }, + { + "name": "IGNORE", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "IGNORE", + "type": "pure-token", + "display_text": "IGNORE", + "token": "IGNORE" + }, + { + "name": "ignoreMaxTimediff", + "type": "integer", + "display_text": "ignoreMaxTimediff" + }, + { + "name": "ignoreMaxValDiff", + "type": "double", + "display_text": "ignoreMaxValDiff" + } + ] + }, + { + "name": "LABELS", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "LABELS", + "type": "pure-token", + "display_text": "LABELS", + "token": "LABELS" + }, + { + "name": "label-value", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "label", + "type": "string", + "display_text": "label" + }, + { + "name": "value", + "type": "string", + "display_text": "value" + } + ] + } + ] + } + ], + "command_flags": [ + "write", + "denyoom", + "module" + ], + "module": "timeseries" + }, + "TS.ALTER": { + "summary": "Update the retention, chunk size, duplicate policy, and labels of an existing time series", + "since": "1.0.0", + "group": "module", + "complexity": "O(N) where N is the number of labels requested to update", + "acl_categories": [ + "@write", + "@timeseries" + ], + "arity": -2, + "key_specs": [ + { + "notes": "", + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "RETENTION", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "retentionPeriod", + "type": "integer", + "display_text": "retentionPeriod", + "token": "RETENTION" + } + ] + }, + { + "name": "CHUNK_SIZE", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "size", + "type": "integer", + "display_text": "size", + "token": "CHUNK_SIZE" + } + ] + }, + { + "name": "DUPLICATE_POLICY", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "DUPLICATE_POLICY", + "type": "pure-token", + "display_text": "DUPLICATE_POLICY", + "token": "DUPLICATE_POLICY" + }, + { + "name": "policy", + "type": "oneof", + "arguments": [ + { + "name": "BLOCK", + "type": "pure-token", + "display_text": "BLOCK", + "token": "BLOCK" + }, + { + "name": "FIRST", + "type": "pure-token", + "display_text": "FIRST", + "token": "FIRST" + }, + { + "name": "LAST", + "type": "pure-token", + "display_text": "LAST", + "token": "LAST" + }, + { + "name": "MIN", + "type": "pure-token", + "display_text": "MIN", + "token": "MIN" + }, + { + "name": "MAX", + "type": "pure-token", + "display_text": "MAX", + "token": "MAX" + }, + { + "name": "SUM", + "type": "pure-token", + "display_text": "SUM", + "token": "SUM" + } + ] + } + ] + }, + { + "name": "IGNORE", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "IGNORE", + "type": "pure-token", + "display_text": "IGNORE", + "token": "IGNORE" + }, + { + "name": "ignoreMaxTimediff", + "type": "integer", + "display_text": "ignoreMaxTimediff" + }, + { + "name": "ignoreMaxValDiff", + "type": "double", + "display_text": "ignoreMaxValDiff" + } + ] + }, + { + "name": "LABELS", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "LABELS", + "type": "pure-token", + "display_text": "LABELS", + "token": "LABELS" + }, + { + "name": "label_value_pairs", + "type": "block", + "optional": true, + "multiple": true, + "arguments": [ + { + "name": "label", + "type": "string", + "display_text": "label" + }, + { + "name": "value", + "type": "string", + "display_text": "value" + } + ] + } + ] + } + ], + "command_flags": [ + "write", + "denyoom", + "module" + ], + "module": "timeseries" + }, + "TS.CREATE": { + "summary": "Create a new time series", + "since": "1.0.0", + "group": "module", + "complexity": "O(1)", + "acl_categories": [ + "@write", + "@fast", + "@timeseries" + ], + "arity": -2, + "key_specs": [ + { + "notes": "", + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "insert": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "RETENTION", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "retentionPeriod", + "type": "integer", + "display_text": "retentionPeriod", + "token": "RETENTION" + } + ] + }, + { + "name": "ENCODING", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "ENCODING", + "type": "pure-token", + "display_text": "ENCODING", + "token": "ENCODING" + }, + { + "name": "enc", + "type": "oneof", + "arguments": [ + { + "name": "COMPRESSED", + "type": "pure-token", + "display_text": "COMPRESSED", + "token": "COMPRESSED" + }, + { + "name": "UNCOMPRESSED", + "type": "pure-token", + "display_text": "UNCOMPRESSED", + "token": "UNCOMPRESSED" + } + ] + } + ] + }, + { + "name": "CHUNK_SIZE", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "size", + "type": "integer", + "display_text": "size", + "token": "CHUNK_SIZE" + } + ] + }, + { + "name": "DUPLICATE_POLICY", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "DUPLICATE_POLICY", + "type": "pure-token", + "display_text": "DUPLICATE_POLICY", + "token": "DUPLICATE_POLICY" + }, + { + "name": "policy", + "type": "oneof", + "arguments": [ + { + "name": "BLOCK", + "type": "pure-token", + "display_text": "BLOCK", + "token": "BLOCK" + }, + { + "name": "FIRST", + "type": "pure-token", + "display_text": "FIRST", + "token": "FIRST" + }, + { + "name": "LAST", + "type": "pure-token", + "display_text": "LAST", + "token": "LAST" + }, + { + "name": "MIN", + "type": "pure-token", + "display_text": "MIN", + "token": "MIN" + }, + { + "name": "MAX", + "type": "pure-token", + "display_text": "MAX", + "token": "MAX" + }, + { + "name": "SUM", + "type": "pure-token", + "display_text": "SUM", + "token": "SUM" + } + ] + } + ] + }, + { + "name": "IGNORE", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "IGNORE", + "type": "pure-token", + "display_text": "IGNORE", + "token": "IGNORE" + }, + { + "name": "ignoreMaxTimediff", + "type": "integer", + "display_text": "ignoreMaxTimediff" + }, + { + "name": "ignoreMaxValDiff", + "type": "double", + "display_text": "ignoreMaxValDiff" + } + ] + }, + { + "name": "LABELS", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "LABELS", + "type": "pure-token", + "display_text": "LABELS", + "token": "LABELS" + }, + { + "name": "label_value_pairs", + "type": "block", + "optional": true, + "multiple": true, + "arguments": [ + { + "name": "label", + "type": "string", + "display_text": "label" + }, + { + "name": "value", + "type": "string", + "display_text": "value" + } + ] + } + ] + } + ], + "command_flags": [ + "write", + "denyoom", + "module" + ], + "module": "timeseries" + }, + "TS.CREATERULE": { + "summary": "Create a compaction rule", + "since": "1.0.0", + "group": "module", + "complexity": "O(1)", + "acl_categories": [ + "@write", + "@timeseries" + ], + "arity": -5, + "key_specs": [ + { + "notes": "Source time series key", + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + }, + { + "notes": "Destination time series key", + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true + } + ], + "arguments": [ + { + "name": "sourceKey", + "type": "key", + "display_text": "sourceKey", + "key_spec_index": 0 + }, + { + "name": "destKey", + "type": "key", + "display_text": "destKey", + "key_spec_index": 1 + }, + { + "name": "AGGREGATION", + "type": "block", + "arguments": [ + { + "name": "AGGREGATION", + "type": "pure-token", + "display_text": "AGGREGATION", + "token": "AGGREGATION" + }, + { + "name": "aggregator", + "type": "oneof", + "arguments": [ + { + "name": "avg", + "type": "pure-token", + "display_text": "avg", + "token": "avg" + }, + { + "name": "sum", + "type": "pure-token", + "display_text": "sum", + "token": "sum" + }, + { + "name": "min", + "type": "pure-token", + "display_text": "min", + "token": "min" + }, + { + "name": "max", + "type": "pure-token", + "display_text": "max", + "token": "max" + }, + { + "name": "range", + "type": "pure-token", + "display_text": "range", + "token": "range" + }, + { + "name": "count", + "type": "pure-token", + "display_text": "count", + "token": "count" + }, + { + "name": "first", + "type": "pure-token", + "display_text": "first", + "token": "first" + }, + { + "name": "last", + "type": "pure-token", + "display_text": "last", + "token": "last" + }, + { + "name": "std.p", + "type": "pure-token", + "display_text": "std.p", + "token": "std.p" + }, + { + "name": "std.s", + "type": "pure-token", + "display_text": "std.s", + "token": "std.s" + }, + { + "name": "var.p", + "type": "pure-token", + "display_text": "var.p", + "token": "var.p" + }, + { + "name": "var.s", + "type": "pure-token", + "display_text": "var.s", + "token": "var.s" + }, + { + "name": "twa", + "type": "pure-token", + "display_text": "twa", + "token": "twa" + }, + { + "name": "countnan", + "type": "pure-token", + "display_text": "countnan", + "token": "countnan" + }, + { + "name": "countall", + "type": "pure-token", + "display_text": "countall", + "token": "countall" + } + ] + }, + { + "name": "bucketDuration", + "type": "integer", + "display_text": "bucketDuration" + } + ] + }, + { + "name": "alignTimestamp", + "type": "integer", + "display_text": "alignTimestamp", + "optional": true + } + ], + "command_flags": [ + "write", + "module", + "fast" + ], + "module": "timeseries" + }, + "TS.DECRBY": { + "summary": "Decrease the value of the latest sample", + "since": "1.0.0", + "group": "module", + "complexity": "O(M) when M is the amount of compaction rules or O(1) with no compaction", + "acl_categories": [ + "@write", + "@timeseries" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "subtrahend", + "type": "double", + "display_text": "subtrahend" + }, + { + "name": "timestamp_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "timestamp_token", + "type": "pure-token", + "display_text": "timestamp_token", + "token": "TIMESTAMP" + }, + { + "name": "timestamp", + "type": "string", + "display_text": "timestamp" + } + ] + }, + { + "name": "retention_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "retention_token", + "type": "pure-token", + "display_text": "retention_token", + "token": "RETENTION" + }, + { + "name": "retentionPeriod", + "type": "integer", + "display_text": "retentionPeriod" + } + ] + }, + { + "name": "encoding_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "encoding_token", + "type": "pure-token", + "display_text": "encoding_token", + "token": "ENCODING" + }, + { + "name": "enc", + "type": "oneof", + "arguments": [ + { + "name": "compressed", + "type": "pure-token", + "display_text": "compressed", + "token": "COMPRESSED" + }, + { + "name": "uncompressed", + "type": "pure-token", + "display_text": "uncompressed", + "token": "UNCOMPRESSED" + } + ] + } + ] + }, + { + "name": "chunk_size_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "chunk_size_token", + "type": "pure-token", + "display_text": "chunk_size_token", + "token": "CHUNK_SIZE" + }, + { + "name": "size", + "type": "integer", + "display_text": "size" + } + ] + }, + { + "name": "duplicate_policy_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "duplicate_policy_token", + "type": "pure-token", + "display_text": "duplicate_policy_token", + "token": "DUPLICATE_POLICY" + }, + { + "name": "policy", + "type": "oneof", + "arguments": [ + { + "name": "BLOCK", + "type": "pure-token", + "display_text": "BLOCK", + "token": "BLOCK" + }, + { + "name": "FIRST", + "type": "pure-token", + "display_text": "FIRST", + "token": "FIRST" + }, + { + "name": "LAST", + "type": "pure-token", + "display_text": "LAST", + "token": "LAST" + }, + { + "name": "MIN", + "type": "pure-token", + "display_text": "MIN", + "token": "MIN" + }, + { + "name": "MAX", + "type": "pure-token", + "display_text": "MAX", + "token": "MAX" + }, + { + "name": "SUM", + "type": "pure-token", + "display_text": "SUM", + "token": "SUM" + } + ] + } + ] + }, + { + "name": "ignore_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "ignore_token", + "type": "pure-token", + "display_text": "ignore_token", + "token": "IGNORE" + }, + { + "name": "ignoreMaxTimeDiff", + "type": "integer", + "display_text": "ignoreMaxTimeDiff" + }, + { + "name": "ignoreMaxValDiff", + "type": "double", + "display_text": "ignoreMaxValDiff" + } + ] + }, + { + "name": "labels_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "labels_token", + "type": "pure-token", + "display_text": "labels_token", + "token": "LABELS" + }, + { + "name": "label-value", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "label", + "type": "string", + "display_text": "label" + }, + { + "name": "value", + "type": "string", + "display_text": "value" + } + ] + } + ] + } + ], + "command_flags": [ + "write", + "denyoom", + "module" + ], + "module": "timeseries" + }, + "TS.DEL": { + "summary": "Delete all samples between two timestamps for a given time series", + "since": "1.6.0", + "group": "module", + "complexity": "O(N) where N is the number of data points that will be removed", + "acl_categories": [ + "@write", + "@timeseries" + ], + "arity": 4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "fromTimestamp", + "type": "integer", + "display_text": "fromTimestamp" + }, + { + "name": "toTimestamp", + "type": "integer", + "display_text": "toTimestamp" + } + ], + "command_flags": [ + "write", + "module" + ], + "module": "timeseries" + }, + "TS.DELETERULE": { + "summary": "Delete a compaction rule", + "since": "1.0.0", + "group": "module", + "complexity": "O(1)", + "acl_categories": [ + "@write", + "@fast", + "@timeseries" + ], + "arity": 3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + }, + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true + } + ], + "arguments": [ + { + "name": "sourceKey", + "type": "key", + "display_text": "sourceKey", + "key_spec_index": 0 + }, + { + "name": "destKey", + "type": "key", + "display_text": "destKey", + "key_spec_index": 1 + } + ], + "command_flags": [ + "write", + "module" + ], + "module": "timeseries" + }, + "TS.GET": { + "summary": "Get the sample with the highest timestamp from a given time series", + "since": "1.0.0", + "group": "module", + "complexity": "O(1)", + "acl_categories": [ + "@read", + "@fast", + "@timeseries" + ], + "arity": -2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "latest", + "type": "pure-token", + "display_text": "latest", + "token": "LATEST", + "optional": true + } + ], + "command_flags": [ + "readonly", + "module" + ], + "module": "timeseries" + }, + "TS.INCRBY": { + "summary": "Increase the value of the latest sample", + "since": "1.0.0", + "group": "module", + "complexity": "O(M) when M is the amount of compaction rules or O(1) with no compaction", + "acl_categories": [ + "@write", + "@timeseries" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "addend", + "type": "double", + "display_text": "addend" + }, + { + "name": "timestamp_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "timestamp_token", + "type": "pure-token", + "display_text": "timestamp_token", + "token": "TIMESTAMP" + }, + { + "name": "timestamp", + "type": "string", + "display_text": "timestamp" + } + ] + }, + { + "name": "retention_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "retention_token", + "type": "pure-token", + "display_text": "retention_token", + "token": "RETENTION" + }, + { + "name": "retentionPeriod", + "type": "integer", + "display_text": "retentionPeriod" + } + ] + }, + { + "name": "encoding_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "encoding_token", + "type": "pure-token", + "display_text": "encoding_token", + "token": "ENCODING" + }, + { + "name": "enc", + "type": "oneof", + "arguments": [ + { + "name": "COMPRESSED", + "type": "pure-token", + "display_text": "COMPRESSED", + "token": "COMPRESSED" + }, + { + "name": "UNCOMPRESSED", + "type": "pure-token", + "display_text": "UNCOMPRESSED", + "token": "UNCOMPRESSED" + } + ] + } + ] + }, + { + "name": "chunk_size_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "chunk_size_token", + "type": "pure-token", + "display_text": "chunk_size_token", + "token": "CHUNK_SIZE" + }, + { + "name": "size", + "type": "integer", + "display_text": "size" + } + ] + }, + { + "name": "duplicate_policy_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "duplicate_policy_token", + "type": "pure-token", + "display_text": "duplicate_policy_token", + "token": "DUPLICATE_POLICY" + }, + { + "name": "policy", + "type": "oneof", + "arguments": [ + { + "name": "BLOCK", + "type": "pure-token", + "display_text": "BLOCK", + "token": "BLOCK" + }, + { + "name": "FIRST", + "type": "pure-token", + "display_text": "FIRST", + "token": "FIRST" + }, + { + "name": "LAST", + "type": "pure-token", + "display_text": "LAST", + "token": "LAST" + }, + { + "name": "MIN", + "type": "pure-token", + "display_text": "MIN", + "token": "MIN" + }, + { + "name": "MAX", + "type": "pure-token", + "display_text": "MAX", + "token": "MAX" + }, + { + "name": "SUM", + "type": "pure-token", + "display_text": "SUM", + "token": "SUM" + } + ] + } + ] + }, + { + "name": "ignore_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "ignore_token", + "type": "pure-token", + "display_text": "ignore_token", + "token": "IGNORE" + }, + { + "name": "ignoreMaxTimeDiff", + "type": "integer", + "display_text": "ignoreMaxTimeDiff" + }, + { + "name": "ignoreMaxValDiff", + "type": "double", + "display_text": "ignoreMaxValDiff" + } + ] + }, + { + "name": "labels_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "labels_token", + "type": "pure-token", + "display_text": "labels_token", + "token": "LABELS" + }, + { + "name": "label-value", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "label", + "type": "string", + "display_text": "label" + }, + { + "name": "value", + "type": "string", + "display_text": "value" + } + ] + } + ] + } + ], + "command_flags": [ + "write", + "denyoom", + "module" + ], + "module": "timeseries" + }, + "TS.INFO": { + "summary": "Returns information and statistics for a time series", + "since": "1.0.0", + "group": "module", + "complexity": "O(1)", + "acl_categories": [ + "@read", + "@fast", + "@timeseries" + ], + "arity": -2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "DEBUG", + "type": "pure-token", + "display_text": "DEBUG", + "token": "DEBUG", + "optional": true + } + ], + "command_flags": [ + "readonly", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "timeseries" + }, + "TS.MADD": { + "summary": "Append new samples to one or more time series", + "since": "1.0.0", + "group": "module", + "complexity": "O(N*M) when N is the amount of series updated and M is the amount of compaction rules or O(N) with no compaction", + "acl_categories": [ + "@write", + "@timeseries" + ], + "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": -1, + "keystep": 3, + "limit": 0 + } + }, + "RW": true, + "insert": true + } + ], + "arguments": [ + { + "name": "ktv", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "timestamp", + "type": "string", + "display_text": "timestamp" + }, + { + "name": "value", + "type": "double", + "display_text": "value" + } + ] + } + ], + "command_flags": [ + "write", + "denyoom", + "module" + ], + "module": "timeseries" + }, + "TS.MGET": { + "summary": "Get the sample with the highest timestamp from each time series matching a specific filter", + "since": "1.0.0", + "group": "module", + "complexity": "O(n) where n is the number of time-series that match the filters", + "acl_categories": [ + "@read", + "@timeseries" + ], + "arity": -3, + "arguments": [ + { + "name": "latest", + "type": "pure-token", + "display_text": "latest", + "token": "LATEST", + "optional": true + }, + { + "name": "labels_block", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "withlabels", + "type": "pure-token", + "display_text": "withlabels", + "token": "WITHLABELS" + }, + { + "name": "selected_labels_block", + "type": "block", + "arguments": [ + { + "name": "selected_labels_token", + "type": "pure-token", + "display_text": "selected_labels_token", + "token": "SELECTED_LABELS" + }, + { + "name": "label", + "type": "string", + "display_text": "label", + "multiple": true + } + ] + } + ] + }, + { + "name": "filter_token", + "type": "pure-token", + "display_text": "filter_token", + "token": "FILTER" + }, + { + "name": "filterExpr", + "type": "string", + "display_text": "filterExpr", + "multiple": true + } + ], + "command_flags": [ + "readonly", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "timeseries" + }, + "TS.MRANGE": { + "summary": "Query a range across multiple time series by filters in forward direction", + "since": "1.0.0", + "group": "module", + "complexity": "O(n/m+k) where n = Number of data points, m = Chunk size (data points per chunk), k = Number of data points that are in the requested ranges", + "acl_categories": [ + "@read", + "@timeseries" + ], + "arity": -4, + "arguments": [ + { + "name": "fromTimestamp", + "type": "string", + "display_text": "fromTimestamp" + }, + { + "name": "toTimestamp", + "type": "string", + "display_text": "toTimestamp" + }, + { + "name": "LATEST", + "type": "pure-token", + "display_text": "LATEST", + "token": "LATEST", + "optional": true + }, + { + "name": "FILTER_BY_TS", + "type": "block", + "optional": true, + "multiple": true, + "arguments": [ + { + "name": "FILTER_BY_TS", + "type": "pure-token", + "display_text": "FILTER_BY_TS", + "token": "FILTER_BY_TS" + }, + { + "name": "timestamp", + "type": "string", + "display_text": "timestamp", + "multiple": true + } + ] + }, + { + "name": "FILTER_BY_VALUE", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "FILTER_BY_VALUE", + "type": "pure-token", + "display_text": "FILTER_BY_VALUE", + "token": "FILTER_BY_VALUE" + }, + { + "name": "min", + "type": "double", + "display_text": "min" + }, + { + "name": "max", + "type": "double", + "display_text": "max" + } + ] + }, + { + "name": "labels", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "WITHLABELS", + "type": "pure-token", + "display_text": "WITHLABELS", + "token": "WITHLABELS" + }, + { + "name": "SELECTED_LABELS", + "type": "block", + "arguments": [ + { + "name": "SELECTED_LABELS", + "type": "pure-token", + "display_text": "SELECTED_LABELS", + "token": "SELECTED_LABELS" + }, + { + "name": "label", + "type": "string", + "display_text": "label", + "multiple": true + } + ] + } + ] + }, + { + "name": "COUNT", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "COUNT" + } + ] + }, + { + "name": "aggregation", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "ALIGN", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "alignment", + "type": "string", + "display_text": "alignment", + "token": "ALIGN" + } + ] + }, + { + "name": "AGGREGATION", + "type": "block", + "arguments": [ + { + "name": "AGGREGATION", + "type": "pure-token", + "display_text": "AGGREGATION", + "token": "AGGREGATION" + }, + { + "name": "aggregators", + "type": "string", + "display_text": "aggregators" + }, + { + "name": "bucketDuration", + "type": "integer", + "display_text": "bucketDuration" + }, + { + "name": "BUCKETTIMESTAMP", + "type": "oneof", + "token": "BUCKETTIMESTAMP", + "optional": true, + "arguments": [ + { + "name": "mid", + "type": "pure-token", + "display_text": "mid", + "token": "mid" + }, + { + "name": "start", + "type": "pure-token", + "display_text": "start", + "token": "start" + }, + { + "name": "end", + "type": "pure-token", + "display_text": "end", + "token": "end" + }, + { + "name": "+", + "type": "pure-token", + "display_text": "+", + "token": "+" + }, + { + "name": "-", + "type": "pure-token", + "display_text": "-", + "token": "-" + }, + { + "name": "~", + "type": "pure-token", + "display_text": "~", + "token": "~" + } + ] + }, + { + "name": "EMPTY", + "type": "pure-token", + "display_text": "EMPTY", + "token": "EMPTY", + "optional": true + } + ] + } + ] + }, + { + "name": "FILTER", + "type": "block", + "arguments": [ + { + "name": "FILTER", + "type": "pure-token", + "display_text": "FILTER", + "token": "FILTER" + }, + { + "name": "filterExpr", + "type": "string", + "display_text": "filterExpr", + "multiple": true + } + ] + }, + { + "name": "GROUPBY", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "GROUPBY", + "type": "pure-token", + "display_text": "GROUPBY", + "token": "GROUPBY" + }, + { + "name": "label", + "type": "string", + "display_text": "label" + }, + { + "name": "REDUCE", + "type": "pure-token", + "display_text": "REDUCE", + "token": "REDUCE" + }, + { + "name": "reducer", + "type": "oneof", + "arguments": [ + { + "name": "avg", + "type": "pure-token", + "display_text": "avg", + "token": "avg" + }, + { + "name": "sum", + "type": "pure-token", + "display_text": "sum", + "token": "sum" + }, + { + "name": "min", + "type": "pure-token", + "display_text": "min", + "token": "min" + }, + { + "name": "max", + "type": "pure-token", + "display_text": "max", + "token": "max" + }, + { + "name": "range", + "type": "pure-token", + "display_text": "range", + "token": "range" + }, + { + "name": "count", + "type": "pure-token", + "display_text": "count", + "token": "count" + }, + { + "name": "first", + "type": "pure-token", + "display_text": "first", + "token": "first" + }, + { + "name": "last", + "type": "pure-token", + "display_text": "last", + "token": "last" + }, + { + "name": "std.p", + "type": "pure-token", + "display_text": "std.p", + "token": "std.p" + }, + { + "name": "std.s", + "type": "pure-token", + "display_text": "std.s", + "token": "std.s" + }, + { + "name": "var.p", + "type": "pure-token", + "display_text": "var.p", + "token": "var.p" + }, + { + "name": "var.s", + "type": "pure-token", + "display_text": "var.s", + "token": "var.s" + }, + { + "name": "twa", + "type": "pure-token", + "display_text": "twa", + "token": "twa" + }, + { + "name": "countnan", + "type": "pure-token", + "display_text": "countnan", + "token": "countnan" + }, + { + "name": "countall", + "type": "pure-token", + "display_text": "countall", + "token": "countall" + } + ] + } + ] + }, + { + "name": "EXCLUDEEMPTY", + "type": "pure-token", + "display_text": "EXCLUDEEMPTY", + "token": "EXCLUDEEMPTY", + "since": "8.10.0", + "optional": true + } + ], + "command_flags": [ + "readonly", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "timeseries" + }, + "TS.MREVRANGE": { + "summary": "Query a range across multiple time series by filters in reverse direction", + "since": "1.4.0", + "group": "module", + "complexity": "O(n/m+k) where n = Number of data points, m = Chunk size (data points per chunk), k = Number of data points that are in the requested ranges", + "acl_categories": [ + "@read", + "@timeseries" + ], + "arity": -4, + "arguments": [ + { + "name": "fromTimestamp", + "type": "string", + "display_text": "fromTimestamp" + }, + { + "name": "toTimestamp", + "type": "string", + "display_text": "toTimestamp" + }, + { + "name": "LATEST", + "type": "pure-token", + "display_text": "LATEST", + "token": "LATEST", + "optional": true + }, + { + "name": "FILTER_BY_TS", + "type": "block", + "optional": true, + "multiple": true, + "arguments": [ + { + "name": "FILTER_BY_TS", + "type": "pure-token", + "display_text": "FILTER_BY_TS", + "token": "FILTER_BY_TS" + }, + { + "name": "timestamp", + "type": "string", + "display_text": "timestamp", + "multiple": true + } + ] + }, + { + "name": "FILTER_BY_VALUE", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "FILTER_BY_VALUE", + "type": "pure-token", + "display_text": "FILTER_BY_VALUE", + "token": "FILTER_BY_VALUE" + }, + { + "name": "min", + "type": "double", + "display_text": "min" + }, + { + "name": "max", + "type": "double", + "display_text": "max" + } + ] + }, + { + "name": "labels", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "WITHLABELS", + "type": "pure-token", + "display_text": "WITHLABELS", + "token": "WITHLABELS" + }, + { + "name": "SELECTED_LABELS", + "type": "block", + "arguments": [ + { + "name": "SELECTED_LABELS", + "type": "pure-token", + "display_text": "SELECTED_LABELS", + "token": "SELECTED_LABELS" + }, + { + "name": "label", + "type": "string", + "display_text": "label", + "multiple": true + } + ] + } + ] + }, + { + "name": "COUNT", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "COUNT" + } + ] + }, + { + "name": "aggregation", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "ALIGN", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "alignment", + "type": "string", + "display_text": "alignment", + "token": "ALIGN" + } + ] + }, + { + "name": "AGGREGATION", + "type": "block", + "arguments": [ + { + "name": "AGGREGATION", + "type": "pure-token", + "display_text": "AGGREGATION", + "token": "AGGREGATION" + }, + { + "name": "aggregators", + "type": "string", + "display_text": "aggregators" + }, + { + "name": "bucketDuration", + "type": "integer", + "display_text": "bucketDuration" + }, + { + "name": "BUCKETTIMESTAMP", + "type": "oneof", + "token": "BUCKETTIMESTAMP", + "optional": true, + "arguments": [ + { + "name": "mid", + "type": "pure-token", + "display_text": "mid", + "token": "mid" + }, + { + "name": "start", + "type": "pure-token", + "display_text": "start", + "token": "start" + }, + { + "name": "end", + "type": "pure-token", + "display_text": "end", + "token": "end" + }, + { + "name": "+", + "type": "pure-token", + "display_text": "+", + "token": "+" + }, + { + "name": "-", + "type": "pure-token", + "display_text": "-", + "token": "-" + }, + { + "name": "~", + "type": "pure-token", + "display_text": "~", + "token": "~" + } + ] + }, + { + "name": "EMPTY", + "type": "pure-token", + "display_text": "EMPTY", + "token": "EMPTY", + "optional": true + } + ] + } + ] + }, + { + "name": "FILTER", + "type": "block", + "arguments": [ + { + "name": "FILTER", + "type": "pure-token", + "display_text": "FILTER", + "token": "FILTER" + }, + { + "name": "filterExpr", + "type": "string", + "display_text": "filterExpr", + "multiple": true + } + ] + }, + { + "name": "GROUPBY", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "GROUPBY", + "type": "pure-token", + "display_text": "GROUPBY", + "token": "GROUPBY" + }, + { + "name": "label", + "type": "string", + "display_text": "label" + }, + { + "name": "REDUCE", + "type": "pure-token", + "display_text": "REDUCE", + "token": "REDUCE" + }, + { + "name": "reducer", + "type": "oneof", + "arguments": [ + { + "name": "avg", + "type": "pure-token", + "display_text": "avg", + "token": "avg" + }, + { + "name": "sum", + "type": "pure-token", + "display_text": "sum", + "token": "sum" + }, + { + "name": "min", + "type": "pure-token", + "display_text": "min", + "token": "min" + }, + { + "name": "max", + "type": "pure-token", + "display_text": "max", + "token": "max" + }, + { + "name": "range", + "type": "pure-token", + "display_text": "range", + "token": "range" + }, + { + "name": "count", + "type": "pure-token", + "display_text": "count", + "token": "count" + }, + { + "name": "first", + "type": "pure-token", + "display_text": "first", + "token": "first" + }, + { + "name": "last", + "type": "pure-token", + "display_text": "last", + "token": "last" + }, + { + "name": "std.p", + "type": "pure-token", + "display_text": "std.p", + "token": "std.p" + }, + { + "name": "std.s", + "type": "pure-token", + "display_text": "std.s", + "token": "std.s" + }, + { + "name": "var.p", + "type": "pure-token", + "display_text": "var.p", + "token": "var.p" + }, + { + "name": "var.s", + "type": "pure-token", + "display_text": "var.s", + "token": "var.s" + }, + { + "name": "twa", + "type": "pure-token", + "display_text": "twa", + "token": "twa" + }, + { + "name": "countnan", + "type": "pure-token", + "display_text": "countnan", + "token": "countnan" + }, + { + "name": "countall", + "type": "pure-token", + "display_text": "countall", + "token": "countall" + } + ] + } + ] + }, + { + "name": "EXCLUDEEMPTY", + "type": "pure-token", + "display_text": "EXCLUDEEMPTY", + "token": "EXCLUDEEMPTY", + "since": "8.10.0", + "optional": true + } + ], + "command_flags": [ + "readonly", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "timeseries" + }, + "TS.NRANGE": { + "summary": "Query a range across multiple time series in forward direction, returning the results pivoted by timestamp (one value column per key)", + "since": "8.10.0", + "group": "module", + "complexity": "O(numkeys*(n/m+k)) where n = Number of samples, m = Chunk size (samples per chunk), k = Number of samples that are in the requested range", + "acl_categories": [ + "@read", + "@timeseries" + ], + "arity": -5, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "keynum", + "spec": { + "keynumidx": 0, + "firstkey": 1, + "keystep": 1 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "numkeys", + "type": "integer", + "display_text": "numkeys" + }, + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "multiple": true + }, + { + "name": "fromTimestamp", + "type": "string", + "display_text": "fromTimestamp" + }, + { + "name": "toTimestamp", + "type": "string", + "display_text": "toTimestamp" + }, + { + "name": "latest", + "type": "pure-token", + "display_text": "latest", + "token": "LATEST", + "optional": true + }, + { + "name": "filter_by_ts_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "filter_by_ts_token", + "type": "pure-token", + "display_text": "filter_by_ts_token", + "token": "FILTER_BY_TS" + }, + { + "name": "ts", + "type": "integer", + "display_text": "ts", + "multiple": true + } + ] + }, + { + "name": "filter_by_value_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "filter_by_value_token", + "type": "pure-token", + "display_text": "filter_by_value_token", + "token": "FILTER_BY_VALUE" + }, + { + "name": "min", + "type": "double", + "display_text": "min" + }, + { + "name": "max", + "type": "double", + "display_text": "max" + } + ] + }, + { + "name": "count_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "count_token", + "type": "pure-token", + "display_text": "count_token", + "token": "COUNT" + }, + { + "name": "count", + "type": "integer", + "display_text": "count" + } + ] + }, + { + "name": "aggregation_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "align_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "align_token", + "type": "pure-token", + "display_text": "align_token", + "token": "ALIGN" + }, + { + "name": "align", + "type": "string", + "display_text": "align" + } + ] + }, + { + "name": "aggregation", + "type": "pure-token", + "display_text": "aggregation", + "token": "AGGREGATION" + }, + { + "name": "aggregators", + "type": "string", + "display_text": "aggregators" + }, + { + "name": "bucketDuration", + "type": "integer", + "display_text": "bucketDuration" + }, + { + "name": "buckettimestamp_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "buckettimestamp_token", + "type": "pure-token", + "display_text": "buckettimestamp_token", + "token": "BUCKETTIMESTAMP" + }, + { + "name": "bt", + "type": "oneof", + "arguments": [ + { + "name": "start", + "type": "pure-token", + "display_text": "start", + "token": "start" + }, + { + "name": "start", + "type": "pure-token", + "display_text": "start", + "token": "-" + }, + { + "name": "end", + "type": "pure-token", + "display_text": "end", + "token": "end" + }, + { + "name": "end", + "type": "pure-token", + "display_text": "end", + "token": "+" + }, + { + "name": "mid", + "type": "pure-token", + "display_text": "mid", + "token": "mid" + }, + { + "name": "mid", + "type": "pure-token", + "display_text": "mid", + "token": "~" + } + ] + } + ] + }, + { + "name": "empty_token", + "type": "pure-token", + "display_text": "empty_token", + "token": "EMPTY", + "optional": true + } + ] + } + ], + "command_flags": [ + "readonly", + "module", + "movablekeys" + ], + "module": "timeseries" + }, + "TS.NREVRANGE": { + "summary": "Query a range across multiple time series in reverse direction, returning the results pivoted by timestamp (one value column per key)", + "since": "8.10.0", + "group": "module", + "complexity": "O(numkeys*(n/m+k)) where n = Number of samples, m = Chunk size (samples per chunk), k = Number of samples that are in the requested range", + "acl_categories": [ + "@read", + "@timeseries" + ], + "arity": -5, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "keynum", + "spec": { + "keynumidx": 0, + "firstkey": 1, + "keystep": 1 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "numkeys", + "type": "integer", + "display_text": "numkeys" + }, + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "multiple": true + }, + { + "name": "fromTimestamp", + "type": "string", + "display_text": "fromTimestamp" + }, + { + "name": "toTimestamp", + "type": "string", + "display_text": "toTimestamp" + }, + { + "name": "latest", + "type": "pure-token", + "display_text": "latest", + "token": "LATEST", + "optional": true + }, + { + "name": "filter_by_ts_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "filter_by_ts_token", + "type": "pure-token", + "display_text": "filter_by_ts_token", + "token": "FILTER_BY_TS" + }, + { + "name": "ts", + "type": "integer", + "display_text": "ts", + "multiple": true + } + ] + }, + { + "name": "filter_by_value_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "filter_by_value_token", + "type": "pure-token", + "display_text": "filter_by_value_token", + "token": "FILTER_BY_VALUE" + }, + { + "name": "min", + "type": "double", + "display_text": "min" + }, + { + "name": "max", + "type": "double", + "display_text": "max" + } + ] + }, + { + "name": "count_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "count_token", + "type": "pure-token", + "display_text": "count_token", + "token": "COUNT" + }, + { + "name": "count", + "type": "integer", + "display_text": "count" + } + ] + }, + { + "name": "aggregation_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "align_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "align_token", + "type": "pure-token", + "display_text": "align_token", + "token": "ALIGN" + }, + { + "name": "align", + "type": "string", + "display_text": "align" + } + ] + }, + { + "name": "aggregation", + "type": "pure-token", + "display_text": "aggregation", + "token": "AGGREGATION" + }, + { + "name": "aggregators", + "type": "string", + "display_text": "aggregators" + }, + { + "name": "bucketDuration", + "type": "integer", + "display_text": "bucketDuration" + }, + { + "name": "buckettimestamp_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "buckettimestamp_token", + "type": "pure-token", + "display_text": "buckettimestamp_token", + "token": "BUCKETTIMESTAMP" + }, + { + "name": "bt", + "type": "oneof", + "arguments": [ + { + "name": "start", + "type": "pure-token", + "display_text": "start", + "token": "start" + }, + { + "name": "start", + "type": "pure-token", + "display_text": "start", + "token": "-" + }, + { + "name": "end", + "type": "pure-token", + "display_text": "end", + "token": "end" + }, + { + "name": "end", + "type": "pure-token", + "display_text": "end", + "token": "+" + }, + { + "name": "mid", + "type": "pure-token", + "display_text": "mid", + "token": "mid" + }, + { + "name": "mid", + "type": "pure-token", + "display_text": "mid", + "token": "~" + } + ] + } + ] + }, + { + "name": "empty_token", + "type": "pure-token", + "display_text": "empty_token", + "token": "EMPTY", + "optional": true + } + ] + } + ], + "command_flags": [ + "readonly", + "module", + "movablekeys" + ], + "module": "timeseries" + }, + "TS.QUERYINDEX": { + "summary": "Get all time series keys matching a filter list", + "since": "1.0.0", + "group": "module", + "complexity": "O(n) where n is the number of time-series that match the filters", + "acl_categories": [ + "@read", + "@timeseries" + ], + "arity": -2, + "arguments": [ + { + "name": "filterExpr", + "type": "string", + "display_text": "filterExpr", + "multiple": true + } + ], + "command_flags": [ + "readonly", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "timeseries" + }, + "TS.QUERYLABELS": { + "summary": "Get all label names, or all values of a given label, for time series matching a filter list, or all series", + "since": "8.10.0", + "group": "module", + "complexity": "O(n) where n is the number of time-series that match the filters (all indexed series when FILTER is omitted)", + "acl_categories": [ + "@read", + "@timeseries" + ], + "arity": -2, + "arguments": [ + { + "name": "subtype", + "type": "oneof", + "arguments": [ + { + "name": "LABELS", + "type": "pure-token", + "display_text": "LABELS", + "token": "LABELS" + }, + { + "name": "VALUES", + "type": "block", + "arguments": [ + { + "name": "VALUES", + "type": "pure-token", + "display_text": "VALUES", + "token": "VALUES" + }, + { + "name": "label", + "type": "string", + "display_text": "label" + } + ] + } + ] + }, + { + "name": "FILTER", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "FILTER", + "type": "pure-token", + "display_text": "FILTER", + "token": "FILTER" + }, + { + "name": "filterExpr", + "type": "string", + "display_text": "filterExpr", + "multiple": true + } + ] + } + ], + "command_flags": [ + "readonly", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "timeseries" + }, + "TS.RANGE": { + "summary": "Query a range in forward direction", + "since": "1.0.0", + "group": "module", + "complexity": "O(n/m+k) where n = Number of data points, m = Chunk size (data points per chunk), k = Number of data points that are in the requested range", + "acl_categories": [ + "@read", + "@timeseries" + ], + "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "fromTimestamp", + "type": "string", + "display_text": "fromTimestamp" + }, + { + "name": "toTimestamp", + "type": "string", + "display_text": "toTimestamp" + }, + { + "name": "latest", + "type": "pure-token", + "display_text": "latest", + "token": "LATEST", + "optional": true + }, + { + "name": "filter_by_ts_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "filter_by_ts_token", + "type": "pure-token", + "display_text": "filter_by_ts_token", + "token": "FILTER_BY_TS" + }, + { + "name": "ts", + "type": "integer", + "display_text": "ts", + "multiple": true + } + ] + }, + { + "name": "filter_by_value_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "filter_by_value_token", + "type": "pure-token", + "display_text": "filter_by_value_token", + "token": "FILTER_BY_VALUE" + }, + { + "name": "min", + "type": "double", + "display_text": "min" + }, + { + "name": "max", + "type": "double", + "display_text": "max" + } + ] + }, + { + "name": "count_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "count_token", + "type": "pure-token", + "display_text": "count_token", + "token": "COUNT" + }, + { + "name": "count", + "type": "integer", + "display_text": "count" + } + ] + }, + { + "name": "aggregation_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "align_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "align_token", + "type": "pure-token", + "display_text": "align_token", + "token": "ALIGN" + }, + { + "name": "align", + "type": "string", + "display_text": "align" + } + ] + }, + { + "name": "aggregation", + "type": "pure-token", + "display_text": "aggregation", + "token": "AGGREGATION" + }, + { + "name": "aggregators", + "type": "string", + "display_text": "aggregators" + }, + { + "name": "bucketDuration", + "type": "integer", + "display_text": "bucketDuration" + }, + { + "name": "buckettimestamp_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "buckettimestamp_token", + "type": "pure-token", + "display_text": "buckettimestamp_token", + "token": "BUCKETTIMESTAMP" + }, + { + "name": "bt", + "type": "oneof", + "arguments": [ + { + "name": "start", + "type": "pure-token", + "display_text": "start", + "token": "start" + }, + { + "name": "start", + "type": "pure-token", + "display_text": "start", + "token": "-" + }, + { + "name": "end", + "type": "pure-token", + "display_text": "end", + "token": "end" + }, + { + "name": "end", + "type": "pure-token", + "display_text": "end", + "token": "+" + }, + { + "name": "mid", + "type": "pure-token", + "display_text": "mid", + "token": "mid" + }, + { + "name": "mid", + "type": "pure-token", + "display_text": "mid", + "token": "~" + } + ] + } + ] + }, + { + "name": "empty_token", + "type": "pure-token", + "display_text": "empty_token", + "token": "EMPTY", + "optional": true + } + ] + } + ], + "command_flags": [ + "readonly", + "module" + ], + "module": "timeseries" + }, + "TS.READ": { + "summary": "Read: return up to max_count samples with timestamp >= timestamp. With BLOCK, waits up to milliseconds ms until at least min_count qualifying samples exist", + "since": "8.10.0", + "group": "module", + "complexity": "O(log(n)+k) where n is the number of samples in the series and k is the number of returned samples", + "acl_categories": [ + "@read", + "@timeseries" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "timestamp", + "type": "string", + "display_text": "timestamp" + }, + { + "name": "BLOCK", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "milliseconds", + "type": "integer", + "display_text": "milliseconds", + "token": "BLOCK" + }, + { + "name": "min_count", + "type": "integer", + "display_text": "min_count" + } + ] + }, + { + "name": "MAX_COUNT", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "max_count", + "type": "integer", + "display_text": "max_count", + "token": "MAX_COUNT" + } + ] + } + ], + "command_flags": [ + "readonly", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "timeseries" + }, + "TS.REVRANGE": { + "summary": "Query a range in reverse direction", + "since": "1.4.0", + "group": "module", + "complexity": "O(n/m+k) where n = Number of data points, m = Chunk size (data points per chunk), k = Number of data points that are in the requested range", + "acl_categories": [ + "@read", + "@timeseries" + ], + "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "fromTimestamp", + "type": "string", + "display_text": "fromTimestamp" + }, + { + "name": "toTimestamp", + "type": "string", + "display_text": "toTimestamp" + }, + { + "name": "latest", + "type": "pure-token", + "display_text": "latest", + "token": "LATEST", + "optional": true + }, + { + "name": "filter_by_ts_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "filter_by_ts_token", + "type": "pure-token", + "display_text": "filter_by_ts_token", + "token": "FILTER_BY_TS" + }, + { + "name": "ts", + "type": "integer", + "display_text": "ts", + "multiple": true + } + ] + }, + { + "name": "filter_by_value_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "filter_by_value_token", + "type": "pure-token", + "display_text": "filter_by_value_token", + "token": "FILTER_BY_VALUE" + }, + { + "name": "min", + "type": "double", + "display_text": "min" + }, + { + "name": "max", + "type": "double", + "display_text": "max" + } + ] + }, + { + "name": "count_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "count_token", + "type": "pure-token", + "display_text": "count_token", + "token": "COUNT" + }, + { + "name": "count", + "type": "integer", + "display_text": "count" + } + ] + }, + { + "name": "aggregation_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "align_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "align_token", + "type": "pure-token", + "display_text": "align_token", + "token": "ALIGN" + }, + { + "name": "align", + "type": "string", + "display_text": "align" + } + ] + }, + { + "name": "aggregation", + "type": "pure-token", + "display_text": "aggregation", + "token": "AGGREGATION" + }, + { + "name": "aggregators", + "type": "string", + "display_text": "aggregators" + }, + { + "name": "bucketDuration", + "type": "integer", + "display_text": "bucketDuration" + }, + { + "name": "buckettimestamp_block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "buckettimestamp_token", + "type": "pure-token", + "display_text": "buckettimestamp_token", + "token": "BUCKETTIMESTAMP" + }, + { + "name": "bt", + "type": "oneof", + "arguments": [ + { + "name": "start", + "type": "pure-token", + "display_text": "start", + "token": "start" + }, + { + "name": "start", + "type": "pure-token", + "display_text": "start", + "token": "-" + }, + { + "name": "end", + "type": "pure-token", + "display_text": "end", + "token": "end" + }, + { + "name": "end", + "type": "pure-token", + "display_text": "end", + "token": "+" + }, + { + "name": "mid", + "type": "pure-token", + "display_text": "mid", + "token": "mid" + }, + { + "name": "mid", + "type": "pure-token", + "display_text": "mid", + "token": "~" + } + ] + } + ] + }, + { + "name": "empty_token", + "type": "pure-token", + "display_text": "empty_token", + "token": "EMPTY", + "optional": true + } + ] + } + ], + "command_flags": [ + "readonly", + "module" + ], + "module": "timeseries" + }, + "TTL": { + "summary": "Returns the expiration time in seconds of a key.", + "since": "1.0.0", + "group": "generic", + "complexity": "O(1)", + "history": [ + [ + "2.8.0", + "Added the -2 reply." + ] + ], + "acl_categories": [ + "@keyspace", + "@read", + "@fast" + ], + "arity": 2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + } + ], + "command_flags": [ + "readonly", + "fast" + ], + "hints": [ + "nondeterministic_output" + ] + }, + "TYPE": { + "summary": "Determines the type of value stored at a key.", + "since": "1.0.0", + "group": "generic", + "complexity": "O(1)", + "acl_categories": [ + "@keyspace", + "@read", + "@fast" + ], + "arity": 2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + } + ], + "command_flags": [ + "readonly", + "fast" + ] + }, + "UNLINK": { + "summary": "Asynchronously deletes one or more keys.", + "since": "4.0.0", + "group": "generic", + "complexity": "O(1) for each key removed regardless of its size. Then the command does O(N) work in a different thread in order to reclaim memory, where N is the number of allocations the deleted objects where composed of.", + "acl_categories": [ + "@keyspace", + "@write", + "@fast" + ], + "arity": -2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": -1, + "keystep": 1, + "limit": 0 + } + }, + "RM": true, + "delete": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "multiple": true + } + ], + "command_flags": [ + "write", + "fast" + ], + "hints": [ + "request_policy:multi_shard", + "response_policy:agg_sum" + ] + }, + "UNSUBSCRIBE": { + "summary": "Stops listening to messages posted to channels.", + "since": "2.0.0", + "group": "pubsub", + "complexity": "O(N) where N is the number of channels to unsubscribe.", + "acl_categories": [ + "@pubsub", + "@slow" + ], + "arity": -1, + "arguments": [ + { + "name": "channel", + "type": "string", + "display_text": "channel", + "optional": true, + "multiple": true + } + ], + "command_flags": [ + "pubsub", + "noscript", + "loading", + "stale" + ] + }, + "UNWATCH": { + "summary": "Forgets about watched keys of a transaction.", + "since": "2.2.0", + "group": "transactions", + "complexity": "O(1)", + "acl_categories": [ + "@fast", + "@transaction" + ], + "arity": 1, + "command_flags": [ + "noscript", + "loading", + "stale", + "fast", + "allow_busy" + ] + }, + "VADD": { + "summary": "Add one or more elements to a vector set, or update its vector if it already exists", + "since": "8.0.0", + "group": "module", + "arity": -5, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "reduce", + "type": "block", + "token": "REDUCE", + "optional": true, + "arguments": [ + { + "name": "dim", + "type": "integer", + "display_text": "dim" + } + ] + }, + { + "name": "format", + "type": "oneof", + "arguments": [ + { + "name": "fp32", + "type": "pure-token", + "display_text": "fp32", + "token": "FP32" + }, + { + "name": "values", + "type": "pure-token", + "display_text": "values", + "token": "VALUES" + } + ] + }, + { + "name": "vector", + "type": "string", + "display_text": "vector" + }, + { + "name": "element", + "type": "string", + "display_text": "element" + }, + { + "name": "cas", + "type": "pure-token", + "display_text": "cas", + "token": "CAS", + "optional": true + }, + { + "name": "quant_type", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "noquant", + "type": "pure-token", + "display_text": "noquant", + "token": "NOQUANT" + }, + { + "name": "bin", + "type": "pure-token", + "display_text": "bin", + "token": "BIN" + }, + { + "name": "q8", + "type": "pure-token", + "display_text": "q8", + "token": "Q8" + } + ] + }, + { + "name": "build-exploration-factor", + "type": "integer", + "display_text": "build-exploration-factor", + "token": "EF", + "optional": true + }, + { + "name": "attributes", + "type": "string", + "display_text": "attributes", + "token": "SETATTR", + "optional": true + }, + { + "name": "numlinks", + "type": "integer", + "display_text": "numlinks", + "token": "M", + "optional": true + } + ], + "command_flags": [ + "write", + "denyoom", + "module" + ], + "module": "vectorset" + }, + "VCARD": { + "summary": "Return the number of elements in a vector set", + "since": "8.0.0", + "group": "module", + "arity": 2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + } + ], + "command_flags": [ + "readonly", + "module", + "fast" + ], + "module": "vectorset" + }, + "VDIM": { + "summary": "Return the dimension of vectors in the vector set", + "since": "8.0.0", + "group": "module", + "arity": 2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + } + ], + "command_flags": [ + "readonly", + "module", + "fast" + ], + "module": "vectorset" + }, + "VEMB": { + "summary": "Return the vector associated with an element", + "since": "8.0.0", + "group": "module", + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "element", + "type": "string", + "display_text": "element" + }, + { + "name": "raw", + "type": "pure-token", + "display_text": "raw", + "token": "RAW", + "optional": true + } + ], + "command_flags": [ + "readonly", + "module", + "fast" + ], + "module": "vectorset" + }, + "VGETATTR": { + "summary": "Retrieve the JSON attributes of elements", + "since": "8.0.0", + "group": "module", + "arity": 3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "element", + "type": "string", + "display_text": "element" + } + ], + "command_flags": [ + "readonly", + "module", + "fast" + ], + "module": "vectorset" + }, + "VINFO": { + "summary": "Return information about a vector set", + "since": "8.0.0", + "group": "module", + "arity": 2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + } + ], + "command_flags": [ + "readonly", + "module", + "fast" + ], + "module": "vectorset" + }, + "VISMEMBER": { + "summary": "Check if an element exists in a vector set", + "since": "8.2.0", + "group": "module", + "arity": 3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "element", + "type": "string", + "display_text": "element" + } + ], + "command_flags": [ + "readonly", + "module" + ], + "module": "vectorset" + }, + "VLINKS": { + "summary": "Return the neighbors of an element at each layer in the HNSW graph", + "since": "8.0.0", + "group": "module", + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "element", + "type": "string", + "display_text": "element" + }, + { + "name": "withscores", + "type": "pure-token", + "display_text": "withscores", + "token": "WITHSCORES", + "optional": true + } + ], + "command_flags": [ + "readonly", + "module", + "fast" + ], + "module": "vectorset" + }, + "VRANDMEMBER": { + "summary": "Return one or multiple random members from a vector set", + "since": "8.0.0", + "group": "module", + "arity": -2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "count", + "type": "integer", + "display_text": "count", + "optional": true + } + ], + "command_flags": [ + "readonly", + "module" + ], + "module": "vectorset" + }, + "VRANGE": { + "summary": "Return vector set elements in a lex range", + "since": "8.4.0", + "group": "module", + "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "start", + "type": "string", + "display_text": "start" + }, + { + "name": "end", + "type": "string", + "display_text": "end" + }, + { + "name": "count", + "type": "integer", + "display_text": "count", + "optional": true + } + ], + "command_flags": [ + "readonly", + "module" + ], + "module": "vectorset" + }, + "VREM": { + "summary": "Remove an element from a vector set", + "since": "8.0.0", + "group": "module", + "arity": 3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "element", + "type": "string", + "display_text": "element" + } + ], + "command_flags": [ + "write", + "module" + ], + "module": "vectorset" + }, + "VSETATTR": { + "summary": "Associate or remove the JSON attributes of elements", + "since": "8.0.0", + "group": "module", + "arity": 4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "element", + "type": "string", + "display_text": "element" + }, + { + "name": "json", + "type": "string", + "display_text": "json" + } + ], + "command_flags": [ + "write", + "module", + "fast" + ], + "module": "vectorset" + }, + "VSIM": { + "summary": "Return elements by vector similarity", + "since": "8.0.0", + "group": "module", + "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "format", + "type": "oneof", + "arguments": [ + { + "name": "ele", + "type": "pure-token", + "display_text": "ele", + "token": "ELE" + }, + { + "name": "fp32", + "type": "pure-token", + "display_text": "fp32", + "token": "FP32" + }, + { + "name": "values", + "type": "pure-token", + "display_text": "values", + "token": "VALUES" + } + ] + }, + { + "name": "vector_or_element", + "type": "string", + "display_text": "vector_or_element" + }, + { + "name": "withscores", + "type": "pure-token", + "display_text": "withscores", + "token": "WITHSCORES", + "optional": true + }, + { + "name": "withattribs", + "type": "pure-token", + "display_text": "withattribs", + "token": "WITHATTRIBS", + "optional": true + }, + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "COUNT", + "optional": true + }, + { + "name": "max_distance", + "type": "double", + "display_text": "max_distance", + "token": "EPSILON", + "optional": true + }, + { + "name": "search-exploration-factor", + "type": "integer", + "display_text": "search-exploration-factor", + "token": "EF", + "optional": true + }, + { + "name": "expression", + "type": "string", + "display_text": "expression", + "token": "FILTER", + "optional": true + }, + { + "name": "max-filtering-effort", + "type": "integer", + "display_text": "max-filtering-effort", + "token": "FILTER-EF", + "optional": true + }, + { + "name": "truth", + "type": "pure-token", + "display_text": "truth", + "token": "TRUTH", + "optional": true + }, + { + "name": "nothread", + "type": "pure-token", + "display_text": "nothread", + "token": "NOTHREAD", + "optional": true + } + ], + "command_flags": [ + "readonly", + "module" + ], + "module": "vectorset" + }, + "WAIT": { + "summary": "Blocks until the asynchronous replication of all preceding write commands sent by the connection is completed.", + "since": "3.0.0", + "group": "generic", + "complexity": "O(1)", + "acl_categories": [ + "@slow", + "@blocking", + "@connection" + ], + "arity": 3, + "arguments": [ + { + "name": "numreplicas", + "type": "integer", + "display_text": "numreplicas" + }, + { + "name": "timeout", + "type": "integer", + "display_text": "timeout" + } + ], + "command_flags": [ + "blocking" + ], + "hints": [ + "request_policy:all_shards", + "response_policy:agg_min" + ] + }, + "WAITAOF": { + "summary": "Blocks until all of the preceding write commands sent by the connection are written to the append-only file of the master and/or replicas.", + "since": "7.2.0", + "group": "generic", + "complexity": "O(1)", + "acl_categories": [ + "@slow", + "@blocking", + "@connection" + ], + "arity": 4, + "arguments": [ + { + "name": "numlocal", + "type": "integer", + "display_text": "numlocal" + }, + { + "name": "numreplicas", + "type": "integer", + "display_text": "numreplicas" + }, + { + "name": "timeout", + "type": "integer", + "display_text": "timeout" + } + ], + "command_flags": [ + "blocking" + ], + "hints": [ + "request_policy:all_shards", + "response_policy:agg_min" + ] + }, + "WATCH": { + "summary": "Monitors changes to keys to determine the execution of a transaction.", + "since": "2.2.0", + "group": "transactions", + "complexity": "O(1) for every key.", + "acl_categories": [ + "@fast", + "@transaction" + ], + "arity": -2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": -1, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "multiple": true + } + ], + "command_flags": [ + "noscript", + "loading", + "stale", + "fast", + "allow_busy" + ] + }, + "XACK": { + "summary": "Returns the number of messages that were successfully acknowledged by the consumer group member of a stream.", + "since": "5.0.0", + "group": "stream", + "complexity": "O(1) for each message ID processed.", + "acl_categories": [ + "@write", + "@stream", + "@fast" + ], + "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "group", + "type": "string", + "display_text": "group" + }, + { + "name": "id", + "type": "string", + "display_text": "id", + "multiple": true + } + ], + "command_flags": [ + "write", + "fast" + ] + }, + "XACKDEL": { + "summary": "Acknowledges and deletes one or multiple messages for a stream consumer group.", + "since": "8.2.0", + "group": "stream", + "complexity": "O(1) for each message ID processed.", + "acl_categories": [ + "@write", + "@stream", + "@fast" + ], + "arity": -6, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "update": true, + "delete": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "group", + "type": "string", + "display_text": "group" + }, + { + "name": "condition", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "keepref", + "type": "pure-token", + "display_text": "keepref", + "token": "KEEPREF" + }, + { + "name": "delref", + "type": "pure-token", + "display_text": "delref", + "token": "DELREF" + }, + { + "name": "acked", + "type": "pure-token", + "display_text": "acked", + "token": "ACKED" + } + ] + }, + { + "name": "ids", + "type": "block", + "token": "IDS", + "arguments": [ + { + "name": "numids", + "type": "integer", + "display_text": "numids" + }, + { + "name": "id", + "type": "string", + "display_text": "id", + "multiple": true + } + ] + } + ], + "command_flags": [ + "write", + "fast" + ] + }, + "XADD": { + "summary": "Appends a new message to a stream. Creates the key if it doesn't exist.", + "since": "5.0.0", + "group": "stream", + "complexity": "O(1) when adding a new entry, O(N) when trimming where N being the number of entries evicted.", + "history": [ + [ + "6.2.0", + "Added the `NOMKSTREAM` option, `MINID` trimming strategy and the `LIMIT` option." + ], + [ + "7.0.0", + "Added support for the `-*` explicit ID form." + ], + [ + "8.2.0", + "Added the `KEEPREF`, `DELREF` and `ACKED` options." + ] + ], + "acl_categories": [ + "@write", + "@stream", + "@fast" + ], + "arity": -5, + "key_specs": [ + { + "notes": "UPDATE instead of INSERT because of the optional trimming feature", + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "nomkstream", + "type": "pure-token", + "display_text": "nomkstream", + "token": "NOMKSTREAM", + "since": "6.2.0", + "optional": true + }, + { + "name": "condition", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "keepref", + "type": "pure-token", + "display_text": "keepref", + "token": "KEEPREF" + }, + { + "name": "delref", + "type": "pure-token", + "display_text": "delref", + "token": "DELREF" + }, + { + "name": "acked", + "type": "pure-token", + "display_text": "acked", + "token": "ACKED" + } + ] + }, + { + "name": "idmp", + "type": "oneof", + "since": "8.6.0", + "optional": true, + "arguments": [ + { + "name": "pid", + "type": "string", + "display_text": "pid", + "token": "IDMPAUTO" + }, + { + "name": "idmp", + "type": "block", + "token": "IDMP", + "arguments": [ + { + "name": "pid", + "type": "string", + "display_text": "pid" + }, + { + "name": "iid", + "type": "string", + "display_text": "iid" + } + ] + } + ] + }, + { + "name": "trim", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "strategy", + "type": "oneof", + "arguments": [ + { + "name": "maxlen", + "type": "pure-token", + "display_text": "maxlen", + "token": "MAXLEN" + }, + { + "name": "minid", + "type": "pure-token", + "display_text": "minid", + "token": "MINID", + "since": "6.2.0" + } + ] + }, + { + "name": "operator", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "equal", + "type": "pure-token", + "display_text": "equal", + "token": "=" + }, + { + "name": "approximately", + "type": "pure-token", + "display_text": "approximately", + "token": "~" + } + ] + }, + { + "name": "threshold", + "type": "string", + "display_text": "threshold" + }, + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "LIMIT", + "since": "6.2.0", + "optional": true + } + ] + }, + { + "name": "id-selector", + "type": "oneof", + "arguments": [ + { + "name": "auto-id", + "type": "pure-token", + "display_text": "auto-id", + "token": "*" + }, + { + "name": "id", + "type": "string", + "display_text": "id" + } + ] + }, + { + "name": "data", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "field", + "type": "string", + "display_text": "field" + }, + { + "name": "value", + "type": "string", + "display_text": "value" + } + ] + } + ], + "command_flags": [ + "write", + "denyoom", + "fast" + ], + "hints": [ + "nondeterministic_output" + ] + }, + "XAUTOCLAIM": { + "summary": "Changes, or acquires, ownership of messages in a consumer group, as if the messages were delivered to as consumer group member.", + "since": "6.2.0", + "group": "stream", + "complexity": "O(1) if COUNT is small.", + "history": [ + [ + "7.0.0", + "Added an element to the reply array, containing deleted entries the command cleared from the PEL" + ] + ], + "acl_categories": [ + "@write", + "@stream", + "@fast" + ], + "arity": -6, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "delete": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "group", + "type": "string", + "display_text": "group" + }, + { + "name": "consumer", + "type": "string", + "display_text": "consumer" + }, + { + "name": "min-idle-time", + "type": "string", + "display_text": "min-idle-time" + }, + { + "name": "start", + "type": "string", + "display_text": "start" + }, + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "COUNT", + "optional": true + }, + { + "name": "justid", + "type": "pure-token", + "display_text": "justid", + "token": "JUSTID", + "optional": true + } + ], + "command_flags": [ + "write", + "fast" + ], + "hints": [ + "nondeterministic_output" + ] + }, + "XCFGSET": { + "summary": "Sets the IDMP configuration parameters for a stream.", + "since": "8.6.0", + "group": "stream", + "complexity": "O(1)", + "acl_categories": [ + "@write", + "@stream", + "@fast" + ], + "arity": -2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "idmp-duration", + "type": "integer", + "display_text": "idmp-duration", + "token": "IDMP-DURATION", + "optional": true + }, + { + "name": "idmp-maxsize", + "type": "integer", + "display_text": "idmp-maxsize", + "token": "IDMP-MAXSIZE", + "optional": true + } + ], + "command_flags": [ + "write", + "fast" + ] + }, + "XCLAIM": { + "summary": "Changes, or acquires, ownership of a message in a consumer group, as if the message was delivered a consumer group member.", + "since": "5.0.0", + "group": "stream", + "complexity": "O(log N) with N being the number of messages in the PEL of the consumer group.", + "acl_categories": [ + "@write", + "@stream", + "@fast" + ], + "arity": -6, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "group", + "type": "string", + "display_text": "group" + }, + { + "name": "consumer", + "type": "string", + "display_text": "consumer" + }, + { + "name": "min-idle-time", + "type": "string", + "display_text": "min-idle-time" + }, + { + "name": "id", + "type": "string", + "display_text": "id", + "multiple": true + }, + { + "name": "ms", + "type": "integer", + "display_text": "ms", + "token": "IDLE", + "optional": true + }, + { + "name": "unix-time-milliseconds", + "type": "unix-time", + "display_text": "unix-time-milliseconds", + "token": "TIME", + "optional": true + }, + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "RETRYCOUNT", + "optional": true + }, + { + "name": "force", + "type": "pure-token", + "display_text": "force", + "token": "FORCE", + "optional": true + }, + { + "name": "justid", + "type": "pure-token", + "display_text": "justid", + "token": "JUSTID", + "optional": true + }, + { + "name": "lastid", + "type": "string", + "display_text": "lastid", + "token": "LASTID", + "optional": true + } + ], + "command_flags": [ + "write", + "fast" + ], + "hints": [ + "nondeterministic_output" + ] + }, + "XDEL": { + "summary": "Returns the number of messages after removing them from a stream.", + "since": "5.0.0", + "group": "stream", + "complexity": "O(1) for each single item to delete in the stream, regardless of the stream size.", + "acl_categories": [ + "@write", + "@stream", + "@fast" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "delete": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "id", + "type": "string", + "display_text": "id", + "multiple": true + } + ], + "command_flags": [ + "write", + "fast" + ] + }, + "XDELEX": { + "summary": "Deletes one or multiple entries from the stream.", + "since": "8.2.0", + "group": "stream", + "complexity": "O(1) for each single item to delete in the stream, regardless of the stream size.", + "acl_categories": [ + "@write", + "@stream", + "@fast" + ], + "arity": -5, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "delete": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "condition", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "keepref", + "type": "pure-token", + "display_text": "keepref", + "token": "KEEPREF" + }, + { + "name": "delref", + "type": "pure-token", + "display_text": "delref", + "token": "DELREF" + }, + { + "name": "acked", + "type": "pure-token", + "display_text": "acked", + "token": "ACKED" + } + ] + }, + { + "name": "ids", + "type": "block", + "token": "IDS", + "arguments": [ + { + "name": "numids", + "type": "integer", + "display_text": "numids" + }, + { + "name": "id", + "type": "string", + "display_text": "id", + "multiple": true + } + ] + } + ], + "command_flags": [ + "write", + "fast" + ] + }, + "XGROUP": { + "summary": "A container for consumer groups commands.", + "since": "5.0.0", + "group": "stream", + "complexity": "Depends on subcommand.", + "acl_categories": [ + "@slow" + ], + "arity": -2 + }, + "XGROUP CREATE": { + "summary": "Creates a consumer group.", + "since": "5.0.0", + "group": "stream", + "complexity": "O(1)", + "history": [ + [ + "7.0.0", + "Added the `entries_read` named argument." + ] + ], + "acl_categories": [ + "@write", + "@stream", + "@slow" + ], + "arity": -5, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "insert": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "group", + "type": "string", + "display_text": "group" + }, + { + "name": "id-selector", + "type": "oneof", + "arguments": [ + { + "name": "id", + "type": "string", + "display_text": "id" + }, + { + "name": "new-id", + "type": "pure-token", + "display_text": "new-id", + "token": "$" + } + ] + }, + { + "name": "mkstream", + "type": "pure-token", + "display_text": "mkstream", + "token": "MKSTREAM", + "optional": true + }, + { + "name": "entriesread", + "type": "integer", + "display_text": "entries-read", + "token": "ENTRIESREAD", + "optional": true + } + ], + "command_flags": [ + "write", + "denyoom" + ] + }, + "XGROUP CREATECONSUMER": { + "summary": "Creates a consumer in a consumer group.", + "since": "6.2.0", + "group": "stream", + "complexity": "O(1)", + "acl_categories": [ + "@write", + "@stream", + "@slow" + ], + "arity": 5, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "insert": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "group", + "type": "string", + "display_text": "group" + }, + { + "name": "consumer", + "type": "string", + "display_text": "consumer" + } + ], + "command_flags": [ + "write", + "denyoom" + ] + }, + "XGROUP DELCONSUMER": { + "summary": "Deletes a consumer from a consumer group.", + "since": "5.0.0", + "group": "stream", + "complexity": "O(1)", + "acl_categories": [ + "@write", + "@stream", + "@slow" + ], + "arity": 5, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "delete": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "group", + "type": "string", + "display_text": "group" + }, + { + "name": "consumer", + "type": "string", + "display_text": "consumer" + } + ], + "command_flags": [ + "write" + ] + }, + "XGROUP DESTROY": { + "summary": "Destroys a consumer group.", + "since": "5.0.0", + "group": "stream", + "complexity": "O(N) where N is the number of entries in the group's pending entries list (PEL).", + "acl_categories": [ + "@write", + "@stream", + "@slow" + ], + "arity": 4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "delete": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "group", + "type": "string", + "display_text": "group" + } + ], + "command_flags": [ + "write" + ] + }, + "XGROUP HELP": { + "summary": "Returns helpful text about the different subcommands.", + "since": "5.0.0", + "group": "stream", + "complexity": "O(1)", + "acl_categories": [ + "@stream", + "@slow" + ], + "arity": 2, + "command_flags": [ + "loading", + "stale" + ] + }, + "XGROUP SETID": { + "summary": "Sets the last-delivered ID of a consumer group.", + "since": "5.0.0", + "group": "stream", + "complexity": "O(1)", + "history": [ + [ + "7.0.0", + "Added the optional `entries_read` argument." + ] + ], + "acl_categories": [ + "@write", + "@stream", + "@slow" + ], + "arity": -5, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "group", + "type": "string", + "display_text": "group" + }, + { + "name": "id-selector", + "type": "oneof", + "arguments": [ + { + "name": "id", + "type": "string", + "display_text": "id" + }, + { + "name": "new-id", + "type": "pure-token", + "display_text": "new-id", + "token": "$" + } + ] + }, + { + "name": "entriesread", + "type": "integer", + "display_text": "entries-read", + "token": "ENTRIESREAD", + "optional": true + } + ], + "command_flags": [ + "write" + ] + }, + "XIDMPRECORD": { + "summary": "An internal command for setting IDMP metadata on an existing stream message.", + "since": "8.6.2", + "group": "stream", + "complexity": "O(1)", + "acl_categories": [ + "@write", + "@stream", + "@fast" + ], + "arity": 5, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "pid", + "type": "string", + "display_text": "pid" + }, + { + "name": "iid", + "type": "string", + "display_text": "iid" + }, + { + "name": "stream-id", + "type": "string", + "display_text": "stream-id" + } + ], + "command_flags": [ + "write", + "denyoom", + "fast" + ] + }, + "XINFO": { + "summary": "A container for stream introspection commands.", + "since": "5.0.0", + "group": "stream", + "complexity": "Depends on subcommand.", + "acl_categories": [ + "@slow" + ], + "arity": -2 + }, + "XINFO CONSUMERS": { + "summary": "Returns a list of the consumers in a consumer group.", + "since": "5.0.0", + "group": "stream", + "complexity": "O(1)", + "history": [ + [ + "7.2.0", + "Added the `inactive` field, and changed the meaning of `idle`." + ] + ], + "acl_categories": [ + "@read", + "@stream", + "@slow" + ], + "arity": 4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "group", + "type": "string", + "display_text": "group" + } + ], + "command_flags": [ + "readonly" + ], + "hints": [ + "nondeterministic_output" + ] + }, + "XINFO GROUPS": { + "summary": "Returns a list of the consumer groups of a stream.", + "since": "5.0.0", + "group": "stream", + "complexity": "O(1)", + "history": [ + [ + "7.0.0", + "Added the `entries-read` and `lag` fields" + ] + ], + "acl_categories": [ + "@read", + "@stream", + "@slow" + ], + "arity": 3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + } + ], + "command_flags": [ + "readonly" + ] + }, + "XINFO HELP": { + "summary": "Returns helpful text about the different subcommands.", + "since": "5.0.0", + "group": "stream", + "complexity": "O(1)", + "acl_categories": [ + "@stream", + "@slow" + ], + "arity": 2, + "command_flags": [ + "loading", + "stale" + ] + }, + "XINFO STREAM": { + "summary": "Returns information about a stream.", + "since": "5.0.0", + "group": "stream", + "complexity": "O(1)", + "history": [ + [ + "6.0.0", + "Added the `FULL` modifier." + ], + [ + "7.0.0", + "Added the `max-deleted-entry-id`, `entries-added`, `recorded-first-entry-id`, `entries-read` and `lag` fields" + ], + [ + "7.2.0", + "Added the `active-time` field, and changed the meaning of `seen-time`." + ], + [ + "8.6.0", + "Added the `idmp-duration`, `idmp-maxsize`, `pids-tracked`, `iids-tracked`, `iids-added` and `iids-duplicates` fields for IDMP tracking." + ], + [ + "8.8.0", + "Added the `nacked-count` field to consumer groups in `FULL` output." + ] + ], + "acl_categories": [ + "@read", + "@stream", + "@slow" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "full-block", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "full", + "type": "pure-token", + "display_text": "full", + "token": "FULL" + }, + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "COUNT", + "optional": true + } + ] + } + ], + "command_flags": [ + "readonly" + ] + }, + "XLEN": { + "summary": "Return the number of messages in a stream.", + "since": "5.0.0", + "group": "stream", + "complexity": "O(1)", + "acl_categories": [ + "@read", + "@stream", + "@fast" + ], + "arity": 2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + } + ], + "command_flags": [ + "readonly", + "fast" + ] + }, + "XNACK": { + "summary": "Releases claimed messages back to the group's PEL without acknowledging them, making them available for re-delivery.", + "since": "8.8.0", + "group": "stream", + "complexity": "O(1) for each message ID processed.", + "acl_categories": [ + "@write", + "@stream", + "@fast" + ], + "arity": -7, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "group", + "type": "string", + "display_text": "group" + }, + { + "name": "mode", + "type": "oneof", + "arguments": [ + { + "name": "silent", + "type": "pure-token", + "display_text": "silent", + "token": "SILENT" + }, + { + "name": "fail", + "type": "pure-token", + "display_text": "fail", + "token": "FAIL" + }, + { + "name": "fatal", + "type": "pure-token", + "display_text": "fatal", + "token": "FATAL" + } + ] + }, + { + "name": "ids", + "type": "block", + "token": "IDS", + "arguments": [ + { + "name": "numids", + "type": "integer", + "display_text": "numids" + }, + { + "name": "id", + "type": "string", + "display_text": "id", + "multiple": true + } + ] + }, + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "RETRYCOUNT", + "optional": true + }, + { + "name": "force", + "type": "pure-token", + "display_text": "force", + "token": "FORCE", + "optional": true + } + ], + "command_flags": [ + "write", + "fast" + ] + }, + "XPENDING": { + "summary": "Returns the information and entries from a stream consumer group's pending entries list.", + "since": "5.0.0", + "group": "stream", + "complexity": "O(N) with N being the number of elements returned, so asking for a small fixed number of entries per call is O(1). O(M), where M is the total number of entries scanned when used with the IDLE filter. When the command returns just the summary and the list of consumers is small, it runs in O(1) time; otherwise, an additional O(N) time for iterating every consumer.", + "history": [ + [ + "6.2.0", + "Added the `IDLE` option and exclusive range intervals." + ] + ], + "acl_categories": [ + "@read", + "@stream", + "@slow" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "group", + "type": "string", + "display_text": "group" + }, + { + "name": "filters", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "min-idle-time", + "type": "integer", + "display_text": "min-idle-time", + "token": "IDLE", + "since": "6.2.0", + "optional": true + }, + { + "name": "start", + "type": "string", + "display_text": "start" + }, + { + "name": "end", + "type": "string", + "display_text": "end" + }, + { + "name": "count", + "type": "integer", + "display_text": "count" + }, + { + "name": "consumer", + "type": "string", + "display_text": "consumer", + "optional": true + } + ] + } + ], + "command_flags": [ + "readonly" + ], + "hints": [ + "nondeterministic_output" + ] + }, + "XRANGE": { + "summary": "Returns the messages from a stream within a range of IDs.", + "since": "5.0.0", + "group": "stream", + "complexity": "O(N) with N being the number of elements being returned. If N is constant (e.g. always asking for the first 10 elements with COUNT), you can consider it O(1).", + "history": [ + [ + "6.2.0", + "Added exclusive ranges." + ] + ], + "acl_categories": [ + "@read", + "@stream", + "@slow" + ], + "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "start", + "type": "string", + "display_text": "start" + }, + { + "name": "end", + "type": "string", + "display_text": "end" + }, + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "COUNT", + "optional": true + } + ], + "command_flags": [ + "readonly" + ] + }, + "XREAD": { + "summary": "Returns messages from multiple streams with IDs greater than the ones requested. Blocks until a message is available otherwise.", + "since": "5.0.0", + "group": "stream", + "history": [ + [ + "8.10.0", + "Added the `MAXCOUNT` and `MAXSIZE` options." + ] + ], + "acl_categories": [ + "@read", + "@stream", + "@slow", + "@blocking" + ], + "arity": -4, + "key_specs": [ + { + "notes": "Incomplete because a stream key named STREAMS (or options before it) can shift the STREAMS keyword; fall back to xreadGetKeys", + "begin_search": { + "type": "keyword", + "spec": { + "keyword": "STREAMS", + "startfrom": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": -1, + "keystep": 1, + "limit": 2 + } + }, + "RO": true, + "access": true, + "incomplete": true + } + ], + "arguments": [ + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "COUNT", + "optional": true + }, + { + "name": "maxcount", + "type": "integer", + "display_text": "maxcount", + "token": "MAXCOUNT", + "since": "8.10.0", + "optional": true + }, + { + "name": "maxsize", + "type": "integer", + "display_text": "maxsize", + "token": "MAXSIZE", + "since": "8.10.0", + "optional": true + }, + { + "name": "milliseconds", + "type": "integer", + "display_text": "milliseconds", + "token": "BLOCK", + "optional": true + }, + { + "name": "streams", + "type": "block", + "token": "STREAMS", + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "multiple": true + }, + { + "name": "id", + "type": "string", + "display_text": "id", + "multiple": true + } + ] + } + ], + "command_flags": [ + "readonly", + "blocking", + "movablekeys" + ] + }, + "XREADGROUP": { + "summary": "Returns new or historical messages from a stream for a consumer in a group. Blocks until a message is available otherwise.", + "since": "5.0.0", + "group": "stream", + "complexity": "For each stream mentioned: O(M) with M being the number of elements returned. If M is constant (e.g. always asking for the first 10 elements with COUNT), you can consider it O(1). On the other side when XREADGROUP blocks, XADD will pay the O(N) time in order to serve the N clients blocked on the stream getting new data.", + "history": [ + [ + "8.4.0", + "Added the `CLAIM` option." + ], + [ + "8.10.0", + "Added the `MAXCOUNT` and `MAXSIZE` options." + ] + ], + "acl_categories": [ + "@write", + "@stream", + "@slow", + "@blocking" + ], + "arity": -7, + "key_specs": [ + { + "notes": "Incomplete because a consumer/group named STREAMS (or options before GROUP) can shift the STREAMS keyword; fall back to xreadGetKeys", + "begin_search": { + "type": "keyword", + "spec": { + "keyword": "STREAMS", + "startfrom": 4 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": -1, + "keystep": 1, + "limit": 2 + } + }, + "RO": true, + "access": true, + "incomplete": true + } + ], + "arguments": [ + { + "name": "group-block", + "type": "block", + "token": "GROUP", + "arguments": [ + { + "name": "group", + "type": "string", + "display_text": "group" + }, + { + "name": "consumer", + "type": "string", + "display_text": "consumer" + } + ] + }, + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "COUNT", + "optional": true + }, + { + "name": "maxcount", + "type": "integer", + "display_text": "maxcount", + "token": "MAXCOUNT", + "since": "8.10.0", + "optional": true + }, + { + "name": "maxsize", + "type": "integer", + "display_text": "maxsize", + "token": "MAXSIZE", + "since": "8.10.0", + "optional": true + }, + { + "name": "milliseconds", + "type": "integer", + "display_text": "milliseconds", + "token": "BLOCK", + "optional": true + }, + { + "name": "min-idle-time", + "type": "integer", + "display_text": "min-idle-time", + "token": "CLAIM", + "since": "8.4.0", + "optional": true + }, + { + "name": "noack", + "type": "pure-token", + "display_text": "noack", + "token": "NOACK", + "optional": true + }, + { + "name": "streams", + "type": "block", + "token": "STREAMS", + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "multiple": true + }, + { + "name": "id", + "type": "string", + "display_text": "id", + "multiple": true + } + ] + } + ], + "command_flags": [ + "write", + "blocking", + "movablekeys" + ] + }, + "XREVRANGE": { + "summary": "Returns the messages from a stream within a range of IDs in reverse order.", + "since": "5.0.0", + "group": "stream", + "complexity": "O(N) with N being the number of elements returned. If N is constant (e.g. always asking for the first 10 elements with COUNT), you can consider it O(1).", + "history": [ + [ + "6.2.0", + "Added exclusive ranges." + ] + ], + "acl_categories": [ + "@read", + "@stream", + "@slow" + ], + "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "end", + "type": "string", + "display_text": "end" + }, + { + "name": "start", + "type": "string", + "display_text": "start" + }, + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "COUNT", + "optional": true + } + ], + "command_flags": [ + "readonly" + ] + }, + "XSETID": { + "summary": "An internal command for replicating stream values.", + "since": "5.0.0", + "group": "stream", + "complexity": "O(1)", + "history": [ + [ + "7.0.0", + "Added the `entries_added` and `max_deleted_entry_id` arguments." + ] + ], + "acl_categories": [ + "@write", + "@stream", + "@fast" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "last-id", + "type": "string", + "display_text": "last-id" + }, + { + "name": "entries-added", + "type": "integer", + "display_text": "entries-added", + "token": "ENTRIESADDED", + "since": "7.0.0", + "optional": true + }, + { + "name": "max-deleted-id", + "type": "string", + "display_text": "max-deleted-id", + "token": "MAXDELETEDID", + "since": "7.0.0", + "optional": true + } + ], + "command_flags": [ + "write", + "denyoom", + "fast" + ] + }, + "XTRIM": { + "summary": "Deletes messages from the beginning of a stream.", + "since": "5.0.0", + "group": "stream", + "complexity": "O(N), with N being the number of evicted entries. Constant times are very small however, since entries are organized in macro nodes containing multiple entries that can be released with a single deallocation.", + "history": [ + [ + "6.2.0", + "Added the `MINID` trimming strategy and the `LIMIT` option." + ], + [ + "8.2.0", + "Added the `KEEPREF`, `DELREF` and `ACKED` options." + ] + ], + "acl_categories": [ + "@write", + "@stream", + "@slow" + ], + "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "delete": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "trim", + "type": "block", + "arguments": [ + { + "name": "strategy", + "type": "oneof", + "arguments": [ + { + "name": "maxlen", + "type": "pure-token", + "display_text": "maxlen", + "token": "MAXLEN" + }, + { + "name": "minid", + "type": "pure-token", + "display_text": "minid", + "token": "MINID", + "since": "6.2.0" + } + ] + }, + { + "name": "operator", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "equal", + "type": "pure-token", + "display_text": "equal", + "token": "=" + }, + { + "name": "approximately", + "type": "pure-token", + "display_text": "approximately", + "token": "~" + } + ] + }, + { + "name": "threshold", + "type": "string", + "display_text": "threshold" + }, + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "LIMIT", + "since": "6.2.0", + "optional": true + }, + { + "name": "condition", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "keepref", + "type": "pure-token", + "display_text": "keepref", + "token": "KEEPREF" + }, + { + "name": "delref", + "type": "pure-token", + "display_text": "delref", + "token": "DELREF" + }, + { + "name": "acked", + "type": "pure-token", + "display_text": "acked", + "token": "ACKED" + } + ] + } + ] + } + ], + "command_flags": [ + "write" + ], + "hints": [ + "nondeterministic_output" + ] + }, + "ZADD": { + "summary": "Adds one or more members to a sorted set, or updates their scores. Creates the key if it doesn't exist.", + "since": "1.2.0", + "group": "sorted-set", + "complexity": "O(log(N)) for each item added, where N is the number of elements in the sorted set.", + "history": [ + [ + "2.4.0", + "Accepts multiple elements." + ], + [ + "3.0.2", + "Added the `XX`, `NX`, `CH` and `INCR` options." + ], + [ + "6.2.0", + "Added the `GT` and `LT` options." + ] + ], + "acl_categories": [ + "@write", + "@sortedset", + "@fast" + ], + "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "condition", + "type": "oneof", + "since": "3.0.2", + "optional": true, + "arguments": [ + { + "name": "nx", + "type": "pure-token", + "display_text": "nx", + "token": "NX" + }, + { + "name": "xx", + "type": "pure-token", + "display_text": "xx", + "token": "XX" + } + ] + }, + { + "name": "comparison", + "type": "oneof", + "since": "6.2.0", + "optional": true, + "arguments": [ + { + "name": "gt", + "type": "pure-token", + "display_text": "gt", + "token": "GT" + }, + { + "name": "lt", + "type": "pure-token", + "display_text": "lt", + "token": "LT" + } + ] + }, + { + "name": "change", + "type": "pure-token", + "display_text": "change", + "token": "CH", + "since": "3.0.2", + "optional": true + }, + { + "name": "increment", + "type": "pure-token", + "display_text": "increment", + "token": "INCR", + "since": "3.0.2", + "optional": true + }, + { + "name": "data", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "score", + "type": "double", + "display_text": "score" + }, + { + "name": "member", + "type": "string", + "display_text": "member" + } + ] + } + ], + "command_flags": [ + "write", + "denyoom", + "fast" + ] + }, + "ZCARD": { + "summary": "Returns the number of members in a sorted set.", + "since": "1.2.0", + "group": "sorted-set", + "complexity": "O(1)", + "acl_categories": [ + "@read", + "@sortedset", + "@fast" + ], + "arity": 2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + } + ], + "command_flags": [ + "readonly", + "fast" + ] + }, + "ZCOUNT": { + "summary": "Returns the count of members in a sorted set that have scores within a range.", + "since": "2.0.0", + "group": "sorted-set", + "complexity": "O(log(N)) with N being the number of elements in the sorted set.", + "acl_categories": [ + "@read", + "@sortedset", + "@fast" + ], + "arity": 4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "min", + "type": "double", + "display_text": "min" + }, + { + "name": "max", + "type": "double", + "display_text": "max" + } + ], + "command_flags": [ + "readonly", + "fast" + ] + }, + "ZDIFF": { + "summary": "Returns the difference between multiple sorted sets.", + "since": "6.2.0", + "group": "sorted-set", + "complexity": "O(L + (N-K)log(N)) worst case where L is the total number of elements in all the sets, N is the size of the first set, and K is the size of the result set.", + "acl_categories": [ + "@read", + "@sortedset", + "@slow" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "keynum", + "spec": { + "keynumidx": 0, + "firstkey": 1, + "keystep": 1 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "numkeys", + "type": "integer", + "display_text": "numkeys" + }, + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "multiple": true + }, + { + "name": "withscores", + "type": "pure-token", + "display_text": "withscores", + "token": "WITHSCORES", + "optional": true + } + ], + "command_flags": [ + "readonly", + "movablekeys" + ] + }, + "ZDIFFSTORE": { + "summary": "Stores the difference of multiple sorted sets in a key.", + "since": "6.2.0", + "group": "sorted-set", + "complexity": "O(L + (N-K)log(N)) worst case where L is the total number of elements in all the sets, N is the size of the first set, and K is the size of the result set.", + "acl_categories": [ + "@write", + "@sortedset", + "@slow" + ], + "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "OW": true, + "update": true + }, + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "keynum", + "spec": { + "keynumidx": 0, + "firstkey": 1, + "keystep": 1 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "destination", + "type": "key", + "display_text": "destination", + "key_spec_index": 0 + }, + { + "name": "numkeys", + "type": "integer", + "display_text": "numkeys" + }, + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 1, + "multiple": true + } + ], + "command_flags": [ + "write", + "denyoom", + "movablekeys" + ] + }, + "ZINCRBY": { + "summary": "Increments the score of a member in a sorted set.", + "since": "1.2.0", + "group": "sorted-set", + "complexity": "O(log(N)) where N is the number of elements in the sorted set.", + "acl_categories": [ + "@write", + "@sortedset", + "@fast" + ], + "arity": 4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "update": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "increment", + "type": "integer", + "display_text": "increment" + }, + { + "name": "member", + "type": "string", + "display_text": "member" + } + ], + "command_flags": [ + "write", + "denyoom", + "fast" + ] + }, + "ZINTER": { + "summary": "Returns the intersect of multiple sorted sets.", + "since": "6.2.0", + "group": "sorted-set", + "complexity": "O(N*K)+O(M*log(M)) worst case with N being the smallest input sorted set, K being the number of input sorted sets and M being the number of elements in the resulting sorted set.", + "history": [ + [ + "8.8.0", + "Added `COUNT` aggregate option." + ] + ], + "acl_categories": [ + "@read", + "@sortedset", + "@slow" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "keynum", + "spec": { + "keynumidx": 0, + "firstkey": 1, + "keystep": 1 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "numkeys", + "type": "integer", + "display_text": "numkeys" + }, + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "multiple": true + }, + { + "name": "weight", + "type": "integer", + "display_text": "weight", + "token": "WEIGHTS", + "optional": true, + "multiple": true + }, + { + "name": "aggregate", + "type": "oneof", + "token": "AGGREGATE", + "optional": true, + "arguments": [ + { + "name": "sum", + "type": "pure-token", + "display_text": "sum", + "token": "SUM" + }, + { + "name": "min", + "type": "pure-token", + "display_text": "min", + "token": "MIN" + }, + { + "name": "max", + "type": "pure-token", + "display_text": "max", + "token": "MAX" + }, + { + "name": "count", + "type": "pure-token", + "display_text": "count", + "token": "COUNT", + "since": "8.8.0" + } + ] + }, + { + "name": "withscores", + "type": "pure-token", + "display_text": "withscores", + "token": "WITHSCORES", + "optional": true + } + ], + "command_flags": [ + "readonly", + "movablekeys" + ] + }, + "ZINTERCARD": { + "summary": "Returns the number of members of the intersect of multiple sorted sets.", + "since": "7.0.0", + "group": "sorted-set", + "complexity": "O(N*K) worst case with N being the smallest input sorted set, K being the number of input sorted sets.", + "acl_categories": [ + "@read", + "@sortedset", + "@slow" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "keynum", + "spec": { + "keynumidx": 0, + "firstkey": 1, + "keystep": 1 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "numkeys", + "type": "integer", + "display_text": "numkeys" + }, + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "multiple": true + }, + { + "name": "limit", + "type": "integer", + "display_text": "limit", + "token": "LIMIT", + "optional": true + } + ], + "command_flags": [ + "readonly", + "movablekeys" + ] + }, + "ZINTERSTORE": { + "summary": "Stores the intersect of multiple sorted sets in a key.", + "since": "2.0.0", + "group": "sorted-set", + "complexity": "O(N*K)+O(M*log(M)) worst case with N being the smallest input sorted set, K being the number of input sorted sets and M being the number of elements in the resulting sorted set.", + "history": [ + [ + "8.8.0", + "Added `COUNT` aggregate option." + ] + ], + "acl_categories": [ + "@write", + "@sortedset", + "@slow" + ], + "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "OW": true, + "update": true + }, + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "keynum", + "spec": { + "keynumidx": 0, + "firstkey": 1, + "keystep": 1 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "destination", + "type": "key", + "display_text": "destination", + "key_spec_index": 0 + }, + { + "name": "numkeys", + "type": "integer", + "display_text": "numkeys" + }, + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 1, + "multiple": true + }, + { + "name": "weight", + "type": "integer", + "display_text": "weight", + "token": "WEIGHTS", + "optional": true, + "multiple": true + }, + { + "name": "aggregate", + "type": "oneof", + "token": "AGGREGATE", + "optional": true, + "arguments": [ + { + "name": "sum", + "type": "pure-token", + "display_text": "sum", + "token": "SUM" + }, + { + "name": "min", + "type": "pure-token", + "display_text": "min", + "token": "MIN" + }, + { + "name": "max", + "type": "pure-token", + "display_text": "max", + "token": "MAX" + }, + { + "name": "count", + "type": "pure-token", + "display_text": "count", + "token": "COUNT", + "since": "8.8.0" + } + ] + } + ], + "command_flags": [ + "write", + "denyoom", + "movablekeys" + ] + }, + "ZLEXCOUNT": { + "summary": "Returns the number of members in a sorted set within a lexicographical range.", + "since": "2.8.9", + "group": "sorted-set", + "complexity": "O(log(N)) with N being the number of elements in the sorted set.", + "acl_categories": [ + "@read", + "@sortedset", + "@fast" + ], + "arity": 4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "min", + "type": "string", + "display_text": "min" + }, + { + "name": "max", + "type": "string", + "display_text": "max" + } + ], + "command_flags": [ + "readonly", + "fast" + ] + }, + "ZMPOP": { + "summary": "Returns the highest- or lowest-scoring members from one or more sorted sets after removing them. Deletes the sorted set if the last member was popped.", + "since": "7.0.0", + "group": "sorted-set", + "complexity": "O(K) + O(M*log(N)) where K is the number of provided keys, N being the number of elements in the sorted set, and M being the number of elements popped.", + "acl_categories": [ + "@write", + "@sortedset", + "@slow" + ], + "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "keynum", + "spec": { + "keynumidx": 0, + "firstkey": 1, + "keystep": 1 + } + }, + "RW": true, + "access": true, + "delete": true + } + ], + "arguments": [ + { + "name": "numkeys", + "type": "integer", + "display_text": "numkeys" + }, + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "multiple": true + }, + { + "name": "where", + "type": "oneof", + "arguments": [ + { + "name": "min", + "type": "pure-token", + "display_text": "min", + "token": "MIN" + }, + { + "name": "max", + "type": "pure-token", + "display_text": "max", + "token": "MAX" + } + ] + }, + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "COUNT", + "optional": true + } + ], + "command_flags": [ + "write", + "movablekeys" + ] + }, + "ZMSCORE": { + "summary": "Returns the score of one or more members in a sorted set.", + "since": "6.2.0", + "group": "sorted-set", + "complexity": "O(N) where N is the number of members being requested.", + "acl_categories": [ + "@read", + "@sortedset", + "@fast" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "member", + "type": "string", + "display_text": "member", + "multiple": true + } + ], + "command_flags": [ + "readonly", + "fast" + ] + }, + "ZPOPMAX": { + "summary": "Returns the highest-scoring members from a sorted set after removing them. Deletes the sorted set if the last member was popped.", + "since": "5.0.0", + "group": "sorted-set", + "complexity": "O(log(N)*M) with N being the number of elements in the sorted set, and M being the number of elements popped.", + "acl_categories": [ + "@write", + "@sortedset", + "@fast" + ], + "arity": -2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "delete": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "count", + "type": "integer", + "display_text": "count", + "optional": true + } + ], + "command_flags": [ + "write", + "fast" + ] + }, + "ZPOPMIN": { + "summary": "Returns the lowest-scoring members from a sorted set after removing them. Deletes the sorted set if the last member was popped.", + "since": "5.0.0", + "group": "sorted-set", + "complexity": "O(log(N)*M) with N being the number of elements in the sorted set, and M being the number of elements popped.", + "acl_categories": [ + "@write", + "@sortedset", + "@fast" + ], + "arity": -2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "access": true, + "delete": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "count", + "type": "integer", + "display_text": "count", + "optional": true + } + ], + "command_flags": [ + "write", + "fast" + ] + }, + "ZRANDMEMBER": { + "summary": "Returns one or more random members from a sorted set.", + "since": "6.2.0", + "group": "sorted-set", + "complexity": "O(N) where N is the number of members returned", + "acl_categories": [ + "@read", + "@sortedset", + "@slow" + ], + "arity": -2, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "options", + "type": "block", + "optional": true, + "arguments": [ + { + "name": "count", + "type": "integer", + "display_text": "count" + }, + { + "name": "withscores", + "type": "pure-token", + "display_text": "withscores", + "token": "WITHSCORES", + "optional": true + } + ] + } + ], + "command_flags": [ + "readonly" + ], + "hints": [ + "nondeterministic_output" + ] + }, + "ZRANGE": { + "summary": "Returns members in a sorted set within a range of indexes.", + "since": "1.2.0", + "group": "sorted-set", + "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements returned.", + "history": [ + [ + "6.2.0", + "Added the `REV`, `BYSCORE`, `BYLEX` and `LIMIT` options." + ] + ], + "acl_categories": [ + "@read", + "@sortedset", + "@slow" + ], + "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "start", + "type": "string", + "display_text": "start" + }, + { + "name": "stop", + "type": "string", + "display_text": "stop" + }, + { + "name": "sortby", + "type": "oneof", + "since": "6.2.0", + "optional": true, + "arguments": [ + { + "name": "byscore", + "type": "pure-token", + "display_text": "byscore", + "token": "BYSCORE" + }, + { + "name": "bylex", + "type": "pure-token", + "display_text": "bylex", + "token": "BYLEX" + } + ] + }, + { + "name": "rev", + "type": "pure-token", + "display_text": "rev", + "token": "REV", + "since": "6.2.0", + "optional": true + }, + { + "name": "limit", + "type": "block", + "token": "LIMIT", + "since": "6.2.0", + "optional": true, + "arguments": [ + { + "name": "offset", + "type": "integer", + "display_text": "offset" + }, + { + "name": "count", + "type": "integer", + "display_text": "count" + } + ] + }, + { + "name": "withscores", + "type": "pure-token", + "display_text": "withscores", + "token": "WITHSCORES", + "optional": true + } + ], + "command_flags": [ + "readonly" + ] + }, + "ZRANGEBYLEX": { + "summary": "Returns members in a sorted set within a lexicographical range.", + "since": "2.8.9", + "group": "sorted-set", + "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements being returned. If M is constant (e.g. always asking for the first 10 elements with LIMIT), you can consider it O(log(N)).", + "deprecated_since": "6.2.0", + "replaced_by": "`ZRANGE` with the `BYLEX` argument", + "acl_categories": [ + "@read", + "@sortedset", + "@slow" + ], + "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "min", + "type": "string", + "display_text": "min" + }, + { + "name": "max", + "type": "string", + "display_text": "max" + }, + { + "name": "limit", + "type": "block", + "token": "LIMIT", + "optional": true, + "arguments": [ + { + "name": "offset", + "type": "integer", + "display_text": "offset" + }, + { + "name": "count", + "type": "integer", + "display_text": "count" + } + ] + } + ], + "command_flags": [ + "readonly" + ], + "doc_flags": [ + "deprecated" + ] + }, + "ZRANGEBYSCORE": { + "summary": "Returns members in a sorted set within a range of scores.", + "since": "1.0.5", + "group": "sorted-set", + "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements being returned. If M is constant (e.g. always asking for the first 10 elements with LIMIT), you can consider it O(log(N)).", + "deprecated_since": "6.2.0", + "replaced_by": "`ZRANGE` with the `BYSCORE` argument", + "history": [ + [ + "2.0.0", + "Added the `WITHSCORES` modifier." + ] + ], + "acl_categories": [ + "@read", + "@sortedset", + "@slow" + ], + "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "min", + "type": "double", + "display_text": "min" + }, + { + "name": "max", + "type": "double", + "display_text": "max" + }, + { + "name": "withscores", + "type": "pure-token", + "display_text": "withscores", + "token": "WITHSCORES", + "since": "2.0.0", + "optional": true + }, + { + "name": "limit", + "type": "block", + "token": "LIMIT", + "optional": true, + "arguments": [ + { + "name": "offset", + "type": "integer", + "display_text": "offset" + }, + { + "name": "count", + "type": "integer", + "display_text": "count" + } + ] + } + ], + "command_flags": [ + "readonly" + ], + "doc_flags": [ + "deprecated" + ] + }, + "ZRANGESTORE": { + "summary": "Stores a range of members from sorted set in a key.", + "since": "6.2.0", + "group": "sorted-set", + "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements stored into the destination key.", + "acl_categories": [ + "@write", + "@sortedset", + "@slow" + ], + "arity": -5, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "OW": true, + "update": true + }, + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "dst", + "type": "key", + "display_text": "dst", + "key_spec_index": 0 + }, + { + "name": "src", + "type": "key", + "display_text": "src", + "key_spec_index": 1 + }, + { + "name": "min", + "type": "string", + "display_text": "min" + }, + { + "name": "max", + "type": "string", + "display_text": "max" + }, + { + "name": "sortby", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "byscore", + "type": "pure-token", + "display_text": "byscore", + "token": "BYSCORE" + }, + { + "name": "bylex", + "type": "pure-token", + "display_text": "bylex", + "token": "BYLEX" + } + ] + }, + { + "name": "rev", + "type": "pure-token", + "display_text": "rev", + "token": "REV", + "optional": true + }, + { + "name": "limit", + "type": "block", + "token": "LIMIT", + "optional": true, + "arguments": [ + { + "name": "offset", + "type": "integer", + "display_text": "offset" + }, + { + "name": "count", + "type": "integer", + "display_text": "count" + } + ] + } + ], + "command_flags": [ + "write", + "denyoom" + ] + }, + "ZRANK": { + "summary": "Returns the index of a member in a sorted set ordered by ascending scores.", + "since": "2.0.0", + "group": "sorted-set", + "complexity": "O(log(N))", + "history": [ + [ + "7.2.0", + "Added the optional `WITHSCORE` argument." + ] + ], + "acl_categories": [ + "@read", + "@sortedset", + "@fast" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "member", + "type": "string", + "display_text": "member" + }, + { + "name": "withscore", + "type": "pure-token", + "display_text": "withscore", + "token": "WITHSCORE", + "optional": true + } + ], + "command_flags": [ + "readonly", + "fast" + ] + }, + "ZREM": { + "summary": "Removes one or more members from a sorted set. Deletes the sorted set if all members were removed.", + "since": "1.2.0", + "group": "sorted-set", + "complexity": "O(M*log(N)) with N being the number of elements in the sorted set and M the number of elements to be removed.", + "history": [ + [ + "2.4.0", + "Accepts multiple elements." + ] + ], + "acl_categories": [ + "@write", + "@sortedset", + "@fast" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "delete": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "member", + "type": "string", + "display_text": "member", + "multiple": true + } + ], + "command_flags": [ + "write", + "fast" + ] + }, + "ZREMRANGEBYLEX": { + "summary": "Removes members in a sorted set within a lexicographical range. Deletes the sorted set if all members were removed.", + "since": "2.8.9", + "group": "sorted-set", + "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements removed by the operation.", + "acl_categories": [ + "@write", + "@sortedset", + "@slow" + ], + "arity": 4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "delete": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "min", + "type": "string", + "display_text": "min" + }, + { + "name": "max", + "type": "string", + "display_text": "max" + } + ], + "command_flags": [ + "write" + ] + }, + "ZREMRANGEBYRANK": { + "summary": "Removes members in a sorted set within a range of indexes. Deletes the sorted set if all members were removed.", + "since": "2.0.0", + "group": "sorted-set", + "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements removed by the operation.", + "acl_categories": [ + "@write", + "@sortedset", + "@slow" + ], + "arity": 4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "delete": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "start", + "type": "integer", + "display_text": "start" + }, + { + "name": "stop", + "type": "integer", + "display_text": "stop" + } + ], + "command_flags": [ + "write" + ] + }, + "ZREMRANGEBYSCORE": { + "summary": "Removes members in a sorted set within a range of scores. Deletes the sorted set if all members were removed.", + "since": "1.2.0", + "group": "sorted-set", + "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements removed by the operation.", + "acl_categories": [ + "@write", + "@sortedset", + "@slow" + ], + "arity": 4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RW": true, + "delete": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "min", + "type": "double", + "display_text": "min" + }, + { + "name": "max", + "type": "double", + "display_text": "max" + } + ], + "command_flags": [ + "write" + ] + }, + "ZREVRANGE": { + "summary": "Returns members in a sorted set within a range of indexes in reverse order.", + "since": "1.2.0", + "group": "sorted-set", + "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements returned.", + "deprecated_since": "6.2.0", + "replaced_by": "`ZRANGE` with the `REV` argument", + "acl_categories": [ + "@read", + "@sortedset", + "@slow" + ], + "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "start", + "type": "integer", + "display_text": "start" + }, + { + "name": "stop", + "type": "integer", + "display_text": "stop" + }, + { + "name": "withscores", + "type": "pure-token", + "display_text": "withscores", + "token": "WITHSCORES", + "optional": true + } + ], + "command_flags": [ + "readonly" + ], + "doc_flags": [ + "deprecated" + ] + }, + "ZREVRANGEBYLEX": { + "summary": "Returns members in a sorted set within a lexicographical range in reverse order.", + "since": "2.8.9", + "group": "sorted-set", + "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements being returned. If M is constant (e.g. always asking for the first 10 elements with LIMIT), you can consider it O(log(N)).", + "deprecated_since": "6.2.0", + "replaced_by": "`ZRANGE` with the `REV` and `BYLEX` arguments", + "acl_categories": [ + "@read", + "@sortedset", + "@slow" + ], + "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "max", + "type": "string", + "display_text": "max" + }, + { + "name": "min", + "type": "string", + "display_text": "min" + }, + { + "name": "limit", + "type": "block", + "token": "LIMIT", + "optional": true, + "arguments": [ + { + "name": "offset", + "type": "integer", + "display_text": "offset" + }, + { + "name": "count", + "type": "integer", + "display_text": "count" + } + ] + } + ], + "command_flags": [ + "readonly" + ], + "doc_flags": [ + "deprecated" + ] + }, + "ZREVRANGEBYSCORE": { + "summary": "Returns members in a sorted set within a range of scores in reverse order.", + "since": "2.2.0", + "group": "sorted-set", + "complexity": "O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements being returned. If M is constant (e.g. always asking for the first 10 elements with LIMIT), you can consider it O(log(N)).", + "deprecated_since": "6.2.0", + "replaced_by": "`ZRANGE` with the `REV` and `BYSCORE` arguments", + "history": [ + [ + "2.1.6", + "`min` and `max` can be exclusive." + ] + ], + "acl_categories": [ + "@read", + "@sortedset", + "@slow" + ], + "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "max", + "type": "double", + "display_text": "max" + }, + { + "name": "min", + "type": "double", + "display_text": "min" + }, + { + "name": "withscores", + "type": "pure-token", + "display_text": "withscores", + "token": "WITHSCORES", + "optional": true + }, + { + "name": "limit", + "type": "block", + "token": "LIMIT", + "optional": true, + "arguments": [ + { + "name": "offset", + "type": "integer", + "display_text": "offset" + }, + { + "name": "count", + "type": "integer", + "display_text": "count" + } + ] + } + ], + "command_flags": [ + "readonly" + ], + "doc_flags": [ + "deprecated" + ] + }, + "ZREVRANK": { + "summary": "Returns the index of a member in a sorted set ordered by descending scores.", + "since": "2.0.0", + "group": "sorted-set", + "complexity": "O(log(N))", + "history": [ + [ + "7.2.0", + "Added the optional `WITHSCORE` argument." + ] + ], + "acl_categories": [ + "@read", + "@sortedset", + "@fast" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "member", + "type": "string", + "display_text": "member" + }, + { + "name": "withscore", + "type": "pure-token", + "display_text": "withscore", + "token": "WITHSCORE", + "optional": true + } + ], + "command_flags": [ + "readonly", + "fast" + ] + }, + "ZSCAN": { + "summary": "Iterates over members and scores of a sorted set.", + "since": "2.8.0", + "group": "sorted-set", + "complexity": "O(1) for every call. O(N) for a complete iteration, including enough command calls for the cursor to return back to 0. N is the number of elements inside the collection.", + "acl_categories": [ + "@read", + "@sortedset", + "@slow" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "cursor", + "type": "integer", + "display_text": "cursor" + }, + { + "name": "pattern", + "type": "pattern", + "display_text": "pattern", + "token": "MATCH", + "optional": true + }, + { + "name": "count", + "type": "integer", + "display_text": "count", + "token": "COUNT", + "optional": true + } + ], + "command_flags": [ + "readonly" + ], + "hints": [ + "nondeterministic_output" + ] + }, + "ZSCORE": { + "summary": "Returns the score of a member in a sorted set.", + "since": "1.2.0", + "group": "sorted-set", + "complexity": "O(1)", + "acl_categories": [ + "@read", + "@sortedset", + "@fast" + ], + "arity": 3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0 + }, + { + "name": "member", + "type": "string", + "display_text": "member" + } + ], + "command_flags": [ + "readonly", + "fast" + ] + }, + "ZUNION": { + "summary": "Returns the union of multiple sorted sets.", + "since": "6.2.0", + "group": "sorted-set", + "complexity": "O(N)+O(M*log(M)) with N being the sum of the sizes of the input sorted sets, and M being the number of elements in the resulting sorted set.", + "history": [ + [ + "8.8.0", + "Added `COUNT` aggregate option." + ] + ], + "acl_categories": [ + "@read", + "@sortedset", + "@slow" + ], + "arity": -3, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "keynum", + "spec": { + "keynumidx": 0, + "firstkey": 1, + "keystep": 1 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "numkeys", + "type": "integer", + "display_text": "numkeys" + }, + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 0, + "multiple": true + }, + { + "name": "weight", + "type": "integer", + "display_text": "weight", + "token": "WEIGHTS", + "optional": true, + "multiple": true + }, + { + "name": "aggregate", + "type": "oneof", + "token": "AGGREGATE", + "optional": true, + "arguments": [ + { + "name": "sum", + "type": "pure-token", + "display_text": "sum", + "token": "SUM" + }, + { + "name": "min", + "type": "pure-token", + "display_text": "min", + "token": "MIN" + }, + { + "name": "max", + "type": "pure-token", + "display_text": "max", + "token": "MAX" + }, + { + "name": "count", + "type": "pure-token", + "display_text": "count", + "token": "COUNT", + "since": "8.8.0" + } + ] + }, + { + "name": "withscores", + "type": "pure-token", + "display_text": "withscores", + "token": "WITHSCORES", + "optional": true + } + ], + "command_flags": [ + "readonly", + "movablekeys" + ] + }, + "ZUNIONSTORE": { + "summary": "Stores the union of multiple sorted sets in a key.", + "since": "2.0.0", + "group": "sorted-set", + "complexity": "O(N)+O(M log(M)) with N being the sum of the sizes of the input sorted sets, and M being the number of elements in the resulting sorted set.", + "history": [ + [ + "8.8.0", + "Added `COUNT` aggregate option." + ] + ], + "acl_categories": [ + "@write", + "@sortedset", + "@slow" + ], + "arity": -4, + "key_specs": [ + { + "begin_search": { + "type": "index", + "spec": { + "index": 1 + } + }, + "find_keys": { + "type": "range", + "spec": { + "lastkey": 0, + "keystep": 1, + "limit": 0 + } + }, + "OW": true, + "update": true + }, + { + "begin_search": { + "type": "index", + "spec": { + "index": 2 + } + }, + "find_keys": { + "type": "keynum", + "spec": { + "keynumidx": 0, + "firstkey": 1, + "keystep": 1 + } + }, + "RO": true, + "access": true + } + ], + "arguments": [ + { + "name": "destination", + "type": "key", + "display_text": "destination", + "key_spec_index": 0 + }, + { + "name": "numkeys", + "type": "integer", + "display_text": "numkeys" + }, + { + "name": "key", + "type": "key", + "display_text": "key", + "key_spec_index": 1, + "multiple": true + }, + { + "name": "weight", + "type": "integer", + "display_text": "weight", + "token": "WEIGHTS", + "optional": true, + "multiple": true + }, + { + "name": "aggregate", + "type": "oneof", + "token": "AGGREGATE", + "optional": true, + "arguments": [ + { + "name": "sum", + "type": "pure-token", + "display_text": "sum", + "token": "SUM" + }, + { + "name": "min", + "type": "pure-token", + "display_text": "min", + "token": "MIN" + }, + { + "name": "max", + "type": "pure-token", + "display_text": "max", + "token": "MAX" + }, + { + "name": "count", + "type": "pure-token", + "display_text": "count", + "token": "COUNT", + "since": "8.8.0" + } + ] + } + ], + "command_flags": [ + "write", + "denyoom", + "movablekeys" + ] + }, + "_FT.CONFIG": { + "group": "module", + "acl_categories": [ + "@admin", + "@search" + ], + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.CONFIG GET": { + "summary": "Retrieves runtime configuration options", + "since": "1.0.0", + "group": "module", + "complexity": "O(1)", + "arity": -3, + "arguments": [ + { + "name": "option", + "type": "string", + "display_text": "option" + } + ], + "command_flags": [ + "readonly", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" + }, + "_FT.CONFIG HELP": { + "summary": "Help description of runtime configuration options", + "since": "1.0.0", + "group": "module", + "complexity": "O(1)", + "arity": -3, + "arguments": [ + { + "name": "option", + "type": "string", + "display_text": "option" + } + ], + "command_flags": [ + "readonly", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" + }, + "_FT.CONFIG SET": { + "summary": "Sets runtime configuration options", + "since": "1.0.0", + "group": "module", + "complexity": "O(1)", + "arity": -3, + "arguments": [ + { + "name": "option", + "type": "string", + "display_text": "option" + }, + { + "name": "value", + "type": "string", + "display_text": "value" + } + ], + "command_flags": [ + "write", + "module" + ], + "hints": [ + "dont_cache" + ], + "module": "search" + }, + "_FT.DEBUG": { + "group": "module", + "acl_categories": [ + "@admin", + "@slow", + "@dangerous", + "@search" + ], + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG BG_SCAN_CONTROLLER": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG CLEAR_PENDING_TOPOLOGY": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG COORD_THREADS": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG DELETE_LOCAL_COORD_CURSORS": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG DELETE_LOCAL_CURSORS": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG DISK_FLUSH": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG DISK_IO_CONTROL": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG DOCIDTOID": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG DOCINFO": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG DUMP_DELETED_IDS": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG DUMP_GEOMIDX": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG DUMP_HNSW": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG DUMP_INVIDX": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG DUMP_NUMIDX": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG DUMP_NUMIDXTREE": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG DUMP_PHONETIC_HASH": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG DUMP_PREFIX_TRIE": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG DUMP_SCHEMA": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG DUMP_SUFFIX_TRIE": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG DUMP_TAGIDX": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG DUMP_TERMS": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG FT.AGGREGATE": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG FT.HYBRID": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG FT.PROFILE": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG FT.SEARCH": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG GC_CLEAN_NUMERIC": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG GC_CONTINUE_SCHEDULE": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG GC_FORCEBGINVOKE": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG GC_FORCEINVOKE": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG GC_STOP_SCHEDULE": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG GC_WAIT_FOR_JOBS": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG GET_HIDE_USER_DATA_FROM_LOGS": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG GET_MAX_DOC_ID": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG GIT_SHA": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG HELP": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG IDTODOCID": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG INDEXER_SLEEP_BEFORE_YIELD_MICROS": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG INDEXES": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG INFO": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG INFO_TAGIDX": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG INVIDX_SUMMARY": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG NUMIDX_SUMMARY": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG PAUSE_TOPOLOGY_UPDATER": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG QUERY_CONTROLLER": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG REGISTER_TEST_SCORERS": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG RESUME_TOPOLOGY_UPDATER": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG SET_MAX_INDEXES": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG SET_MONITOR_EXPIRATION": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG SHARD_CONNECTION_STATES": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG SPEC_INVIDXES_INFO": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG TTL": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG TTL_EXPIRE": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG TTL_PAUSE": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG VECSIM_INFO": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG VECSIM_MOCK_TIMEOUT": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG WORKERS": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG YIELDS_COUNTER": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG _FT.AGGREGATE": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG _FT.HYBRID": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG _FT.PROFILE": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" + }, + "_FT.DEBUG _FT.SEARCH": { + "group": "module", + "arity": -2, + "command_flags": [ + "readonly", + "module" + ], + "module": "search" } }