COMMAND 系列查命令元数据
COMMAND 系列让程序化地读到 Redis 自身的命令元数据:命令总数、每条命令的参数形式与能力标志、官方文档字段,以及把一条具体命令解析成它要操作的键。写客户端、代理中间件、审计白名单或自动补全工具时都会用到,它把「哪些命令能做什么」从硬编码变成可查询。
基本信息
| 适用平台 | Redis 2.8.13 起提供 COMMAND 族,7.0 起新增 DOCS 与 LIST |
|---|---|
| COMMAND COUNT | 返回命令总数,用于兼容性探测 |
| COMMAND INFO | 返回参数个数、能力标志、首末键位置等信息 |
| COMMAND DOCS | 7.0 起返回 summary、since、complexity 等字段 |
| COMMAND GETKEYS | 把完整命令解析成它操作的键列表 |
| COMMAND GETKEYSANDFLAGS | 7.0 起在键之外返回读写标志 |
| 返回结构 | 按版本演进,7.0 的 INFO 增加 ACL 类别、提示与键规范 |
典型使用场景
- 客户端库启动时拉取命令元数据,做参数校验与自动补全
- 集群客户端计算键所属槽位,判断请求该发到哪个节点
- 代理中间件判定某条命令可路由到单分片还是必须广播
- 安全审计按能力标志筛出写命令或管理命令,生成白名单
- 内部平台生成命令速查文档与编辑器提示
常用查询
常用查询
# 命令总数与指定命令的元数据
COMMAND COUNT
COMMAND INFO GET SET MSET
# 7.0 起:命令文档条目(summary/since/complexity/arguments)
COMMAND DOCS GET
COMMAND LIST FILTERBY ACLCAT read # 按 ACL 类别过滤
COMMAND LIST FILTERBY PATTERN 'json.*' # 按名称模式过滤
# 解析键位置:客户端据此计算槽位
COMMAND GETKEYS MSET k1 v1 k2 v2
COMMAND GETKEYS EVAL "return redis.call('GET', KEYS[1])" 1 mykey
COMMAND GETKEYSANDFLAGS GET mykey # 7.0 起:键与读写标志
# 过滤写命令
COMMAND LIST FILTERBY ACLCAT write各子命令返回什么
| 命令 | 返回内容 | 典型用途 |
|---|---|---|
| COMMAND COUNT | 命令总数 | 版本兼容探测 |
| COMMAND INFO | 参数个数、标志、键位置 | 参数校验与路由 |
| COMMAND DOCS | 文档字段与参数说明 | 生成文档与提示 |
| COMMAND LIST | 按类别或模式筛选的命令名 | 白名单生成 |
| COMMAND GETKEYS | 命令涉及的键列表 | 计算槽位 |
| COMMAND GETKEYSANDFLAGS | 键与读写访问标志 | 只读路由与审计 |
COMMAND 的输出结构随版本演进:7.0 的 INFO 增加了 ACL 类别、提示与键规范字段,GETKEYSANDFLAGS 才带读写标志。解析代码要按字段名取值而不是按下标取值,升级 Redis 之后回归一遍工具行为。