Нужно ли мне выходить из моего экземпляра клиента redis, используя .quit ()? - PullRequest
2 голосов
/ 13 декабря 2011

Глядя на этот код ниже (взято со страницы 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 () автоматически выполняет выход для меня? Я пытаюсь отладить утечку памяти в моем Redis, и я понял, что я нигде не использую .quit (). Должен ли я быть?

То есть, должен ли мой код выглядеть так?

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

По сути, куда идет client.quit и нужен ли он мне вообще?

1 Ответ

6 голосов
/ 13 декабря 2011

"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 не будет закрыто, пока вы не перезапустите сервер Redis. Вы должны использовать client.quit(), когда весь ваш процесс будет завершен. (Например, в вашем последнем обратном вызове)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...