我是否需要使用.quit()退出节点的redis客户端实例?

看下面的代码(取自git页面 )

var redis = require("redis"), client = redis.createClient(), multi; // runs immediately client.mset("incr thing", 100, "incr other thing", 1, redis.print); multi = client.multi(); // drains multi queue and runs atomically multi.exec(function (err, replies) { console.log(replies); // 101, 2 client.quit(); // IS THIS OPTIONAL? }); 

我想知道是否client.quit()是可选的,或者如果multi.exec()自动为我执行退出? 我试图debugging我的redis中的内存泄漏,我意识到我没有在任何地方使用.quit()。 我可以做?

意思是说,我的代码应该是这样吗?

 client = redis.createClient(); multi = clent.multi(); multi.exec( {something} ); client.quit(); 

基本上,client.quit去哪里,我甚至需要它?

“MULTI命令排队,直到EXEC发出,然后所有命令都由Redis自动运行。

这是github的一个例子:

 // multi chain with an individual callback client.multi() .scard("bigset") .smembers("bigset") .keys("*", function (err, replies) { client.mget(replies, redis.print); }) .dbsize() .exec(function (err, replies) { console.log("MULTI got " + replies.length + " replies"); replies.forEach(function (reply, index) { console.log("Reply " + index + ": " + reply.toString()); }); }); 

你的问题:我需要使用client.quit()吗? 是的,你需要,因为你的Redis连接将不会被closures,直到你重新启动你的Redis服务器。 当你的所有进程完成后,你应该使用client.quit() 。 (例如,在你最后的callback中)