查看下面的代码(取自git page)
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()是否自动为我退出?我正在尝试在我的redis中调试内存泄漏,我意识到我没有在任何地方使用.quit()。我应该吗?
意思是,我的代码应该是这样吗?
client = redis.createClient();
multi = clent.multi();
multi.exec( {something} );
client.quit();
基本上,client.quit去哪里,我甚至需要它?
答案 0 :(得分:6)
“在发出EXEC之前,MULTI命令排队,然后所有命令都由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服务器之前,您的redis连接不会关闭。完成所有流程后,您应该使用client.quit()
。 (例如,在你的上一次回调中)