redis4支持内存碎片清理功能使用
最近看到redis4支持内存碎片清理了, 之前一直期待有这么一个功能, 因为之前遇到内存碎片的解决办法就是重启, 现在终于有了优雅的解决方案.\^o^/, 这个功能其实oranagra 在2017年1月1日已经提交pr了, 相关地址: https://github.com/antirez/redis/pull/3720 版本说明: Redis 4.0-RC3 以上版本才支持的 需要使用jemalloc作为内存分配器(默认的) 功能介绍: 支持在运行期进行自动内存碎片清理 (config set activedefrag yes) 支持通过命令 memory purge 进行清理(与自动清理区域不同) 功能验证流程: (1) 首先需要拉取4.0-RC3之后的版本代码, 编译 (2) 启动时限定内存大小为1g并启动lru, 命令如下: ./src/redis-server --maxmemory 1gb --maxmemory-policy allkeys-lru --activedefrag no --port 6383 (3) 构造大量数据并导致lru, 这样可以触发内存碎片, 命令如下: redis-cli -p 6383 debug populate 7000000 asdf 150 (4) 查看当前的内存使用情况, 会发现有200多万的数据被清理掉了 $ redis-cli