为什么在重新启动redis时node.js内存泄漏

如果你运行下面的代码,并重新启动你的Redis服务器,你会得到一个或两个uncaughtException,但没有更多的错误,然后,内存将增长非常快,我想知道为什么以及如何解决这个问题。

/** * This code will memory leak, if you restart redis server when the node process is running * * @author Gui Lin */ var redis = require('redis').createClient(); setInterval(function(){ redis.multi() .zrangebyscore('timeup', 0, Date.now()) .zremrangebyscore('timeup', 0, Date.now()) .exec(function(err, data) { if(err) console.log(err.stack); if(data) data = data[0]; }); }, 1); process.on('uncaughtException', function(err) { console.log(err.stack); }) 

这可能是node_redis排队node_redis队列中的命令。 你可以检查redis.offline_queue.length ,并且可能会停止发布太长的命令,或者类似的东西。 另请参阅node_redis文档 (searchoffline_queue )。