geeky_monster
geeky_monster

Reputation: 8802

How do I issue HGET/GET command for Redis Database via Node.js?

I am using Node.js and a Redis Database . I am new to Redis .

I am using the https://github.com/mranney/node_redis driver for node.

Initialization code -

var redis = require("redis"),
client = redis.createClient();

I tried setting up some key value pairs -

client.hset("users:123" ,"name", "Jack");

I wish to know I can get the name parameter from Redis via Node .

I tried

var name = client.hget("users:123", "name");  //returns 'true'

but it just returns 'true' as the output. I want the value ( i.e - Jack ) What is the statement I need to use ?

Upvotes: 14

Views: 21563

Answers (3)

S G
S G

Reputation: 51

If you are using redis version 4.X + ,then no more callback would be needed .All method like get () ,hget() etc. returns a promises.

Upvotes: 0

Thomas Fritz
Thomas Fritz

Reputation: 1295

This is how you should do it:

client.hset("users:123", "name", "Jack");
// returns the complete hash
client.hgetall("users:123", function (err, obj) {
   console.dir(obj);
});

// OR

// just returns the name of the hash
client.hget("users:123", "name", function (err, obj) {
   console.dir(obj);
});

Also make sure you understand the concept of callbacks and closures in JavaScript as well as the asynchronous nature of node.js. As you can see, you pass a function (callback or closure) to hget. This function gets called as soon as the redis client has retrieved the result from the server. The first argument will be an error object if an error occurred, otherwise the first argument will be null. The second argument will hold the results.

Upvotes: 25

geeky_monster
geeky_monster

Reputation: 8802

I found the answer -

A callback function is needed for getting the values .

client.hget("users:123", "name", function (err, reply) {

    console.log(reply.toString());

    });

Upvotes: 0

Related Questions