【问题标题】:Redis keys are presented as strings, not objectsRedis 键显示为字符串,而不是对象
【发布时间】:2017-09-28 18:40:25
【问题描述】:

我想使用 nodejs 从 Redis 会话中获取数据 - 但我无法获取对象的内部值......

这是一个简单的路由器

      router.get('/page-user', function (req, res) {

      console.log(redis_model.prototype.getAll());


      })

这是模型

  redis_model.prototype.getAll = function () {

    client.keys('*', function (err, keys) {
    if (err) return console.log(err);

    for(var i = 0, len = keys.length; i < len; i++) {
        console.log(keys[i]);
       }
     });
   };

所以我明白了

 users
 id:users
 session:php:cf5myWFkDNEPwiRLpi6M1P6LqX1UPFtj //object
 user:{58}

我正在尝试从会话密钥中获取数据,但我得到了 Undefined ,如下所示:

redis_model.prototype.getAll = function () {

 client.keys('*', function (err, keys) {
    if (err) return console.log(err);
        console.log(keys['session']);  // tried also keys.session

});
};

我不明白的部分是为什么我得到所有键的类型字符串 - 就像这里:

redis_model.prototype.getAll = function () {

    client.keys('*', function (err, keys) {
    if (err) return console.log(err);


        console.log(typeof keys[i]); result : //string,string, string,string

   });
};

我已经尝试使用 HGETALL 将键作为对象,但我仍然无法定义:

  redis_model.prototype.getAll = function () {

    client.hgetall("session",function(data){console.log(data)});
  };

这是redis db的截图...

【问题讨论】:

  • Redis 键是 always 字符串。

标签: node.js redis


【解决方案1】:

Client.keys("*",function(err,keys){})

这只是返回redisDB中存在的所有键,基本上是字符串

你可以使用

client.get('key',function(err,data){})

为了得到一个对象的结果,它应该被存储为一个哈希,即

client.hmset("session",{'php':'cf5myWFkDNEPwiRLpi6M1P6LqX1UPFtj'}
client.hgetall("session",function(data){console.log(data.php)})

上面的代码给了你分配给 php 的值。

【讨论】:

  • nuy5 - 谢谢 - 我已经更新了问题 - 我尝试使用 HGETALL 但仍然未定义......
【解决方案2】:

知道了……

redis_model.prototype.getAll = function () {

client.get('session:php:VfAPTh_NLpBrcq3VGHTC8uT7c-sF4bQd', function(err, 
 result){
    var foo = (JSON.parse(result))['user'];
    console.log( foo);
  });
};

【讨论】:

    猜你喜欢
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 2017-10-17
    • 2013-03-24
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 2012-09-12
    相关资源
    最近更新 更多