# 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 →