futriix/src/commands/scan.json
nihohit 9f512017aa
Update request/response policies. (#12417)
changing the response and request policy of a few commands,
see https://redis.io/docs/reference/command-tips

1. RANDOMKEY used to have no response policy, which means
  that when sent to multiple shards, the responses should be aggregated.
  this normally applies to commands that return arrays, but since RANDOMKEY
  replies with a simple string, it actually requires a SPECIAL response policy
  (for the client to select just one)
2. SCAN used to have no response policy, but although the key names part of
  the response can be aggregated, the cursor part certainly can't.
3. MSETNX had a request policy of MULTI_SHARD and response policy of AGG_MIN,
  but in fact the contract with MSETNX is that when one key exists, it returns 0
  and doesn't set any key, routing it to multiple shards would mean that if one failed
  and another succeeded, it's atomicity is broken and it's impossible to return a valid
  response to the caller.

Co-authored-by: Shachar Langbeheim <shachlan@amazon.com>
Co-authored-by: Oran Agra <oran@redislabs.com>
2023-07-25 10:21:23 +03:00

73 lines
2.0 KiB
JSON

{
"SCAN": {
"summary": "Iterates over the key names in the database.",
"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.",
"group": "generic",
"since": "2.8.0",
"arity": -2,
"function": "scanCommand",
"history": [
[
"6.0.0",
"Added the `TYPE` subcommand."
]
],
"command_flags": [
"READONLY",
"TOUCHES_ARBITRARY_KEYS"
],
"acl_categories": [
"KEYSPACE"
],
"command_tips": [
"NONDETERMINISTIC_OUTPUT",
"REQUEST_POLICY:SPECIAL",
"RESPONSE_POLICY:SPECIAL"
],
"arguments": [
{
"name": "cursor",
"type": "integer"
},
{
"token": "MATCH",
"name": "pattern",
"type": "pattern",
"optional": true
},
{
"token": "COUNT",
"name": "count",
"type": "integer",
"optional": true
},
{
"token": "TYPE",
"name": "type",
"type": "string",
"optional": true,
"since": "6.0.0"
}
],
"reply_schema": {
"description": "cursor and scan response in array form",
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": [
{
"description": "cursor",
"type": "string"
},
{
"description": "list of keys",
"type": "array",
"items": {
"type": "string"
}
}
]
}
}
}