*Redis COMMAND GETKEYSANDFLAGS 命令
从给定命令中提取 key 参数以及每个 key 的读写标志。Redis 7.0+ 引入,是 COMMAND GETKEYS 的增强版本。
*语法
COMMAND GETKEYSANDFLAGS command arg [arg ...]
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| command | String | 是 | 命令名称 |
| arg | String | 是 | 命令参数 |
*返回值
| 条件 | 返回值 |
|---|---|
| 成功 | key 和 flags 数组 [key, flags, key, flags, ...] |
*时间复杂度
O(N)
*
*示例
> COMMAND GETKEYSANDFLAGS MSET a b c d
1) "a"
2) 1) "OW" # 写入标志
2) "update"
3) "c"
4) 1) "OW"
2) "update"
> COMMAND GETKEYSANDFLAGS ZUNIONSTORE out 2 zset1 zset2 WEIGHTS 1 2
1) "out"
2) 1) "OW"
2) "update"
3) "zset1"
4) 1) "read"
5) "zset2"
6) 1) "read"
*常见错误
- 命令不支持 key 提取:部分命令(如 EVAL)的动态 key 需要手动分析。
*最佳实践
- 命令分析:解析命令中的 key 位置和读写标志,用于路由、权限控制和审计。
*FAQ
Q: COMMAND GETKEYSANDFLAGS 和 COMMAND GETKEYS 有什么区别? A: COMMAND GETKEYS 只返回 key 列表;COMMAND GETKEYSANDFLAGS 同时返回每个 key 的读写标志(read/write/update 等)。