Не могу SET / GET с NodeJS и Redis - PullRequest
       30

Не могу SET / GET с NodeJS и Redis

3 голосов
/ 03 декабря 2011

Я хочу написать обработчик переадресации ueberDB для моего Etherpad.

Я абсолютно не понимаю мою проблему, потому что с помощью PHP я могу устанавливать и получать ключи / значения без проблем. Это только не работает с NodeJS.

Вот пример кода:

var redis = require("redis");
client = redis.createClient();
client.on("error", function (err) {
  console.log("Error " + err);
});

client.set("test", "string val", redis.print);
console.log(client.get("test"));

Что я не прав? Может быть, у кого-нибудь есть совет для меня.

Ответы [ 2 ]

7 голосов
/ 03 декабря 2011

Во-первых, вам нужно знать, подключен ли ваш Redis-клиент.Вы можете проверить с console.log (клиент), и вы увидите varaible под названием «подключен».Вы должны увидеть «true»

Если вы хотите использовать redis в узле, вы должны использовать что-то вроде этого

    client.set("test","val", function(err) {
        if (err) {
           // Something went wrong
           console.error("error");
        } else {
            client.get("test", function(err, value) {
                 if (err) {
                     console.error("error");
                 } else {
                     console.log("Worked: " + value);
                 }
            });
        }
    });

Имейте в виду, что все функции redis являются асинхронными.

1 голос
/ 16 мая 2013

Если это не очевидно из принятого ответа, причина, по которой отправленный код не работает, связана с асинхронностью.

Вы вызываете get () до завершения set ().

...