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

Я хочу написать Redis-Handler 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 ответа

Решение

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

Если вы хотите использовать 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 являются асинхронными.

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

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

Другие вопросы по тегам