*Redis MEMORY 命令
MEMORY 是 Redis 内存诊断命令的入口,提供多个子命令用于分析内存使用状况、诊断问题、获取统计信息。
*语法
MEMORY subcommand [arg ...]
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| subcommand | String | 是 | 子命令:DOCTOR / HELP / MALLOC-STATS / PURGE / STATS / USAGE |
*返回值
- 返回值取决于具体子命令
- 子命令不存在时返回错误
*时间复杂度
- 取决于子命令:O(1) 到 O(N) 不等
*示例
*查看 HELP
> MEMORY HELP
1) MEMORY DOCTOR
2) MEMORY MALLOC-STATS
3) MEMORY PURGE
4) MEMORY STATS
5) MEMORY USAGE [key] [SAMPLES count]
*获取内存统计
> MEMORY STATS
1) "peak.allocated"
2) (integer) 1048576
3) "total.allocated"
4) (integer) 524288
...
*内存诊断
> MEMORY DOCTOR
"Hi, I am your friendly Redis Doctor..."
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| ERR unknown subcommand | 子命令名称错误 | 使用 MEMORY HELP 查看可用子命令 |
*最佳实践
- 内存问题排查时先用 MEMORY DOCTOR 获取诊断建议
- 定期使用 MEMORY STATS 监控内存使用趋势
- 内存碎片严重时使用 MEMORY PURGE 回收
- 分析特定 key 内存占用时使用 MEMORY USAGE key
*FAQ
Q1: MEMORY 命令会影响性能吗? A: 大部分子命令是 O(1) 或 O(N),通常不会显著影响性能。但 MEMORY USAGE 分析大 key 时可能较慢。
Q2: MEMORY 所有子命令都需要管理员权限吗? A: 通常需要足够权限执行内存诊断操作,具体取决于 ACL 配置。
Q3: MEMORY 和 INFO memory 有什么区别? A: INFO memory 提供汇总统计;MEMORY 提供详细的诊断、分析和操作能力。