Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't SET/GET with NodeJS and Redis

I want to write a ueberDB Redis-Handler for my Etherpad.

I absolutely do not understand my problem because with PHP I can set and get key/values without any problems. It only does not work with NodeJS.

Here is a example code:

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"));

What do I wrong? Maybe somebody has a tip for me.

like image 541
user1078442 Avatar asked Dec 27 '22 10:12

user1078442


2 Answers

First, you need to know if your redis client is connected. You can check with console.log(client) and you will see a varaible called "connected". You should see "true"

If you want to use redis in node you should use something like this

    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);
                 }
            });
        }
    });

Keep in mind that all redis function are asynchronous.

like image 167
malletjo Avatar answered Jan 13 '23 12:01

malletjo


If it's not obvious from the accepted answer, the reason the posted code is failing is due to the asynchronicity.

You're calling get() before set() has completed.

like image 28
Benjamin Wootton Avatar answered Jan 13 '23 10:01

Benjamin Wootton