*Redis MEMORY PURGE 命令

MEMORY PURGE 尝试回收内存分配器中的脏页(dirty pages),释放未使用的内存回操作系统。


*语法

MEMORY PURGE

*参数说明

无参数。


*返回值

  • OK:命令执行成功(不代表一定释放了内存)

*时间复杂度

O(1)

*

*示例

> MEMORY PURGE
OK

*常见错误

错误 原因 解决
ERR wrong number of arguments 传入了额外参数 不需要任何参数

*最佳实践

  • 在内存碎片率较高(INFO memory 中 memfragmentationratio 明显 > 1.5)时尝试
  • 释放效果取决于底层内存分配器行为,不保证立即释放大量内存
  • 生产环境谨慎使用,可能短暂影响性能
  • 建议作为维护窗口操作,非日常高频使用
  • 配合 jemalloc 使用时效果最佳

*FAQ

Q1: MEMORY PURGE 能释放多少内存? A: 取决于分配器状态,可能释放部分也可能几乎不释放,没有固定值。

Q2: 会阻塞 Redis 吗? A: 通常不会阻塞,但底层分配器操作可能有微小延迟。

Q3: 和删除 key 释放内存有什么区别? A: 删除 key 只是标记内存为可回收;PURGE 尝试将空闲内存页还给操作系统。

Q4: 为什么释放了 key 内存但 RSS 没下降? A: 内存分配器可能保留内存用于复用,PURGE 可以尝试让其归还 OS。