一、主动碎片整理
当key被频繁修改,value长度不断变化时,Redis会为key分配新的内存空间。由于Redis追求高性能,实现了自己的内存分配器来管理内存,因此并不会将原有内存释放给OS,从而导致出现内存碎片。当used_memory_rss/used_memory高于1.5,一般认为内存碎片占比过高,内存利用率低。
因此,合理规划和使用缓存数据,规范数据写入,有助于减少内存碎片的产生。
Redis3.x及以下:可以通过定期重启服务解决内存碎片问题。建议实际缓存数据不超过配置可用内存的50%。
Redis4.x:支持主动整理内存碎片,服务在运行期间进行自动内存碎片清理。同时Redis4.x支持通过memory purge命令手动清理内存碎片。
Redis5.0:第二版主动碎片整理为增强版主动碎片整理,配合Jemalloc版本更新,更快更智能,延时更低。