mirror of
https://github.com/redis/redis.git
synced 2026-02-03 20:39:54 -05:00
Adding command tips (see https://redis.io/topics/command-tips) to commands.
Breaking changes:
1. Removed the "random" and "sort_for_script" flags. They are now command tips.
(this isn't affecting redis behavior since #9812, but could affect some client applications
that's relying on COMMAND command flags)
Summary of changes:
1. add BLOCKING flag (new flag) for all commands that could block. The ACL category with
the same name is now implicit.
2. move RANDOM flag to a `nondeterministic_output` tip
3. move SORT_FOR_SCRIPT flag to `nondeterministic_output_order` tip
3. add REQUEST_POLICY and RESPONSE_POLICY where appropriate as documented in the tips
4. deprecate (ignore) the `random` flag for RM_CreateCommand
Other notes:
1. Proxies need to send `RANDOMKEY` to all shards and then select one key randomly.
The other option is to pick a random shard and transfer `RANDOMKEY `to it, but that scheme
fails if this specific shard is empty
2. Remove CMD_RANDOM from `XACK` (i.e. XACK does not have RANDOM_OUTPUT)
It was added in 9e4fb96ca1, I guess by mistake.
Also from `(P)EXPIRETIME` (new command, was flagged "random" by mistake).
3. Add `nondeterministic_output` to `OBJECT ENCODING` (for the same reason `XTRIM` has it:
the reply may differ depending on the internal representation in memory)
4. RANDOM on `HGETALL` was wrong (there due to a limitation of the old script sorting logic), now
it's `nondeterministic_output_order`
5. Unrelated: Hide CMD_PROTECTED from COMMAND
77 lines
2.1 KiB
JSON
77 lines
2.1 KiB
JSON
{
|
|
"BLMPOP": {
|
|
"summary": "Pop elements from a list, or block until one is available",
|
|
"complexity": "O(N+M) where N is the number of provided keys and M is the number of elements returned.",
|
|
"group": "list",
|
|
"since": "7.0.0",
|
|
"arity": -5,
|
|
"function": "blmpopCommand",
|
|
"get_keys_function": "blmpopGetKeys",
|
|
"command_flags": [
|
|
"WRITE",
|
|
"BLOCKING"
|
|
],
|
|
"acl_categories": [
|
|
"LIST"
|
|
],
|
|
"key_specs": [
|
|
{
|
|
"flags": [
|
|
"RW",
|
|
"ACCESS",
|
|
"DELETE"
|
|
],
|
|
"begin_search": {
|
|
"index": {
|
|
"pos": 2
|
|
}
|
|
},
|
|
"find_keys": {
|
|
"keynum": {
|
|
"keynumidx": 0,
|
|
"firstkey": 1,
|
|
"step": 1
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"arguments": [
|
|
{
|
|
"name": "timeout",
|
|
"type": "double"
|
|
},
|
|
{
|
|
"name": "numkeys",
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"name": "key",
|
|
"type": "key",
|
|
"key_spec_index": 0,
|
|
"multiple": true
|
|
},
|
|
{
|
|
"name": "where",
|
|
"type": "oneof",
|
|
"arguments": [
|
|
{
|
|
"name": "left",
|
|
"type": "pure-token",
|
|
"token": "LEFT"
|
|
},
|
|
{
|
|
"name": "right",
|
|
"type": "pure-token",
|
|
"token": "RIGHT"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"token": "COUNT",
|
|
"name": "count",
|
|
"type": "integer",
|
|
"optional": true
|
|
}
|
|
]
|
|
}
|
|
}
|