Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在redis中,如何获取特定键的值?_Node.js_Redis - Fatal编程技术网

Node.js 在redis中,如何获取特定键的值?

Node.js 在redis中,如何获取特定键的值?,node.js,redis,Node.js,Redis,在我的节点应用程序中,我使用redisdb来存储数据。当使用key获取存储值时,我没有得到预期的输出 var redis=require('redis'); var client = redis.createClient(); var pageContent={a: "a", b: "b", c: "c"}; //client.set('A',pageContent);//here i'm setting the value client.get('A',function(err,res){

在我的节点应用程序中,我使用redisdb来存储数据。当使用key获取存储值时,我没有得到预期的输出

var redis=require('redis');
var client = redis.createClient();
var pageContent={a: "a", b: "b", c: "c"};
//client.set('A',pageContent);//here i'm setting the value
client.get('A',function(err,res){
 if(!err){
   Object.keys(res).forEach(function(k){
     console.log('key is '+k + ' value is '+res[k]);
    });
   }
 else{
    console.log('error');
   }
 });
上面的代码没有给出存储值。当循环结果时,我得到下面的错误

 TypeError: Object.keys called on non-object

所以我试过res.toString();但是我没有得到存储值,我只得到了[object]

问题是您正试图使用保存对象。在redis中,
SET
GET
只处理字符串,因此返回
[object object]
的原因是该字符串保存在redis中--对象的字符串表示形式

您可以在保存时使用
JSON.stringify
,在读取时使用
JSON.parse
,将对象序列化为JSON,也可以在保存时使用和(或/)在读取时将对象保存为redis散列

编辑:但是请注意,如果您决定使用redis散列,您不能有“嵌套”对象,即,您不能在其中一个属性是数组或另一个对象的情况下存储对象。就是

{
  a: 1,
  b: 2
}
没关系,尽管

{
  a: {
    b: 2
  }
}

事实并非如此。如果您有这样的对象,则需要另一个模型(在本例中,带有SET/GET的JSON工作得非常好)。

问题是您正在尝试使用保存对象。在redis中,
SET
GET
只处理字符串,因此返回
[object object]
的原因是该字符串保存在redis中--对象的字符串表示形式

您可以在保存时使用
JSON.stringify
,在读取时使用
JSON.parse
,将对象序列化为JSON,也可以在保存时使用和(或/)在读取时将对象保存为redis散列

编辑:但是请注意,如果您决定使用redis散列,您不能有“嵌套”对象,即,您不能在其中一个属性是数组或另一个对象的情况下存储对象。就是

{
  a: 1,
  b: 2
}
没关系,尽管

{
  a: {
    b: 2
  }
}

事实并非如此。如果您有这样的对象,您需要另一个模型(带有SET/GET的JSON在这种情况下工作得非常好)。

您只能使用
SET
存储字符串。因此,您可以在保存时
JSON.stringify
对象,或者在读取时
JSON.parse
对象,或者使用and将其存储为散列。@LinusGThiel谢谢您。我将使用hmset和hgetallCool——您知道吗,我会将此作为一个答案加以充实。您只能使用
SET
存储字符串。因此,您可以在保存时
JSON.stringify
对象,或者在读取时
JSON.parse
对象,或者使用and将其存储为哈希。@LinusGThiel谢谢您。我将使用hmset和hgetallCool——您知道吗,我会将其充实为一个答案。这个答案对我有帮助!多谢各位+这答案对我有帮助!多谢各位+1给你:)