*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。