*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 提供详细的诊断、分析和操作能力。