COMMAND 系列做什么
COMMAND INFO 返回命令的元信息:参数结构、flags、首键位置与步长;COMMAND DOCS 返回命令的文档说明。客户端与排查脚本可以据此动态裁剪命令集、判断命令风险级别,比维护一份静态命令清单更不容易和实际版本脱节。
基本信息
| INFO | 返回元信息:参数结构、flags、首键、步长 |
|---|---|
| DOCS | 返回命令文档说明,Redis 7.0+ |
| COUNT/LIST | 命令总数与命令名列表 |
| GETKEYS | 解析命令实际涉及的键 |
| 用途 | 白名单、风险分级、复杂度报表 |
典型使用场景
- 自研代理或中间件按元信息判断命令能否放行
- 安全检查:识别写命令、内存风险命令
- 客户端侧生成参数校验规则
- 版本升级后核对命令是否存在、语义是否变化
- 构建命令复杂度报表,辅助慢命令治理
常用调用
常用调用
redis-cli COMMAND INFO get,set # 查看指定命令的元信息
redis-cli COMMAND INFO get | head -20 # 单条命令,便于逐字段阅读
redis-cli COMMAND DOCS get # 命令文档说明,需 Redis 7.0+
redis-cli COMMAND COUNT # 当前实例支持的命令总数
redis-cli COMMAND LIST | head -20 # 命令名列表,可做白名单底稿
redis-cli COMMAND GETKEYS MSET k1 v1 k2 v2 # 解析命令涉及的所有键flags 取值读法
| flag | 含义 | 关注点 |
|---|---|---|
| write | 写命令 | 在只读副本上会被拒绝,白名单要区分读写 |
| readonly | 只读且可安全读副本 | 读扩展路由的依据 |
| denyoom | 内存不足时直接拒绝 | 涉及内存分配,与水位告警关联看 |
| admin | 管理类命令 | 风险高,需严格管控 |
| blocking | 可能阻塞连接 | 如 BLPOP,管道中要避免 |
| fast | 常数或对数级复杂度 | 对比 O(N) 类命令识别慢命令 |
| movablekeys | 键位置需动态解析 | 如 SORT、GEORADIUS,按固定位置取键会错 |
flags 里的 denyoom 表示该命令在内存不足时会被直接拒绝,容量评估时要把它与内存水位告警关联起来看,而不是只盯 used_memory。
硬编码命令清单会在版本升级后与实际脱节;改用 COMMAND 元信息动态判断,能自动跟随实例变化,代价只是每次调用一点开销。
COMMAND 系列的返回体量不算小,适合在服务启动或配置变更时拉取缓存,不适合放进每次请求的判定路径高频调用。