Node.js 在redis中,如何获取特定键的值?
在我的节点应用程序中,我使用redisdb来存储数据。当使用key获取存储值时,我没有得到预期的输出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){
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给你:)