
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>
73 lines
2.0 KiB
JSON
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"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|