• guybe7's avatar
    Add command tips to COMMAND DOCS (#10104) · 10bbeb68
    guybe7 authored
    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 9e4fb96c, 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
    10bbeb68
generate-command-code.py 14 KB