# Command
获取 Redis 命令详情数组
语法
COMMAND
可用版本:
2.8.13
时间复杂度:
O(N) 其中 N 是 Redis 命令的总数
ACL 类别:
@slow,@connection
返回一个包含每个 Redis 命令详细信息的数组。
该COMMAND命令是内省的。它的回复描述了服务器可以处理的所有命令。Redis 客户端可以在握手期间调用它来获取服务器的运行时能力。
COMMAND还有几个子命令。有关详细信息,请参阅其子命令。
集群注意事项: 此命令对于支持集群的客户端特别有用。此类客户端必须识别命令中的键名,才能将请求路由到正确的分片。尽管大多数命令都接受一个键作为它们的第一个参数,但这条规则有很多例外。您可以调用COMMAND并将命令之间的映射与其各自的密钥规范规则缓存在客户端中。
它返回的回复是一个数组,每个命令都有一个元素。描述 Redis 命令的每个元素本身都表示为一个数组。
该命令的数组由固定数量的元素组成。数组中元素的确切数量取决于服务器的版本。
- Name
 - Arity
 - Flags
 - First key
 - Last key
 - Step
 - ACL 类别(从 Redis 6.0 开始)
 - 提示(从 Redis 7.0 开始)
 - 关键规范(从 Redis 7.0 开始)
 - 子命令(从 Redis 7.0 开始)
 
# 姓名
这是小写的命令名称。
注意: Redis 命令名称不区分大小写。
# 阿里蒂
Arity 是命令期望的参数数量。它遵循一个简单的模式:
- 正整数表示固定数量的参数。
 - 负整数表示最少数量的参数。
 
命令 arity始终包括命令的名称本身(以及适用时的子命令)。
例子:
GET的 arity 为2,因为该命令仅接受一个参数并且始终具有格式GET _key_.MGET的 arity 为*-2*,因为该命令至少接受一个参数,但可能接受多个参数:MGET _key1_ [key2] [key3] ....
# 标志
命令标志是一个数组。它可以包含以下简单字符串(状态回复):
- **admin:**该命令是一个管理命令。
 - **问:**即使在哈希槽迁移期间也允许该命令。此标志与 Redis 集群部署相关。
 - **阻塞:**该命令可能会阻塞请求的客户端。
 - denyoom:如果服务器的内存使用率太高,该命令将被拒绝(请参阅maxmemory配置指令)。
 - **快速:**命令以恒定或 log(N) 时间运行。此标志用于使用
LATENCY命令监视延迟。 - **loading:**在加载数据库时允许该命令。
 - **可移动键:**第一个键、最后一个键和步长值并不能确定所有键的位置。在这种情况下,客户需要使用
COMMAND GETKEYS或关键规范。请参阅下面的更多细节。 - **no_auth:**执行命令不需要认证。
 - **no_async_loading:**该命令在异步加载期间被拒绝(即当副本使用无磁盘
SWAPDB SYNC并允许访问旧数据集时)。 - **no_mandatory_keys:**该命令可以接受键名参数,但这些不是强制性的。
 - no_multi:在事务的上下文中不允许该命令。
 - **noscript:**不能从脚本或函数调用该命令。
 - **pubsub:**该命令与Redis Pub/Sub相关。
 - random:该命令返回随机结果,这是逐字脚本复制的一个问题。从 Redis 7.0 开始,这个标志是一个命令提示。
 - **readonly:**该命令不修改数据。
 - **sort_for_script:**命令的输出在从脚本调用时进行排序。
 - **skip_monitor:**该命令未显示在
MONITOR的输出中。 - **skip_slowlog:**该命令未显示在
SLOWLOG的输出中。从 Redis 7.0 开始,这个标志是一个命令提示。 - **stale:**当一个副本有过时的数据时,该命令是允许的。
 - **write:**该命令可以修改数据。
 
# 可动keys
考虑SORT:
1) 1) "sort"
   2) (integer) -2
   3) 1) write
      2) denyoom
      3) movablekeys
   4) (integer) 1
   5) (integer) 1
   6) (integer) 1
   ...
一些 Redis 命令没有预先确定的关键位置或不容易找到。对于这些命令,movablekeys标志表示first key、last key和step值不足以找到所有键。
以下是几个具有可移动键标志的命令示例:
SORT: 可选的STORE、BY和GET修饰符后跟键名。ZUNION: numkeys参数指定数字键名参数。MIGRATE: 键出现KEYS关键字且仅当第二个参数为空字符串时。
Redis 集群客户端需要使用以下其他措施来定位此类命令的键。
您可以使用该COMMAND GETKEYS命令并让您的 Redis 服务器报告给定命令调用的所有键。
从 Redis 7.0 开始,客户端可以使用键规范来识别键名的位置。唯一需要使用的命令COMMAND GETKEYS是SORT和MIGRATE用于解析密钥规范的客户端。
有关详细信息,请参阅关键规格页面。
# 第一把钥匙
命令的第一个键名参数的位置。对于大多数命令,第一个键的位置是 1。位置 0 始终是命令名称本身。
# 最后一个键
命令的最后一个键名参数的位置。Redis 命令通常接受一个、两个或多个键。
接受单个键的命令将第一个键和最后一个键都设置为 1。
接受两个键名参数的命令,例如和BRPOPLPUSH,将此值设置为其第二个键的位置。[SMOVE``RENAME
接受任意数量的键的多键命令,例如MSET,使用值 -1。
# 步骤
第一个键和下一个键的位置之间的步长或增量。
考虑以下两个示例:
1) 1) "mset"
   2) (integer) -3
   3) 1) write
      2) denyoom
   4) (integer) 1
   5) (integer) -1
   6) (integer) 2
   ...
1) 1) "mget"
   2) (integer) -2
   3) 1) readonly
      2) fast
   4) (integer) 1
   5) (integer) -1
   6) (integer) 1
   ...
步数允许我们找到键的位置。例如MSET:它的语法是MSET _key1_ _val1_ [key2] [val2] [key3] [val3]...,所以键在每隔一个位置(步长值为2)。与 不同MGET,它使用步长值1。
# ACL 类别
这是一个简单字符串数组,它们是命令所属的 ACL 类别。请参阅访问控制列表页面了解更多信息。
# 命令提示
有关命令的有用信息。供客户/代理使用。
请查看命令提示页面以获取更多信息。
# 主要规格
这是一个由命令的关键规范组成的数组。数组中的每个元素都是一个映射,描述了在命令参数中定位键的方法。
欲了解更多信息,请查看[关键规格页面。
# 子命令
这是一个包含所有命令子命令(如果有)的数组。一些 Redis 命令有子命令(例如, 的REWRITE子命令CONFIG)。COMMAND数组中的每个元素代表一个子命令,并遵循与回复相同的规范。
# 返回
数组回复:命令详细信息的嵌套列表。
数组中的命令顺序是随机的。
# 例子
以下是该命令COMMAND的输出:GET
1)  1) "get"
    2) (integer) 2
    3) 1) readonly
       2) fast
    4) (integer) 1
    5) (integer) 1
    6) (integer) 1
    7) 1) @read
       2) @string
       3) @fast
    8) (empty array)
    9) 1) 1) "flags"
          2) 1) read
          3) "begin_search"
          4) 1) "type"
             2) "index"
             3) "spec"
             4) 1) "index"
                2) (integer) 1
          5) "find_keys"
          6) 1) "type"
             2) "range"
             3) "spec"
             4) 1) "lastkey"
                2) (integer) 0
                3) "keystep"
                4) (integer) 1
                5) "limit"
                6) (integer) 0
   10) (empty array)
...
# 反馈
如果您在此页面上发现问题,或有改进建议,请提交请求以合并或打开存储库中的问题。
← Config Get Slaveof →