我是否需要使用.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中)