从nodejs中的php获取memcache数据

时间:2015-03-30 12:40:48

标签: php node.js memcached


我在nodejs中从memcache获取数据时遇到问题。 首先,我用php在memcache中设置数据 Php代码:

$memcache = new Memcache;<br>
  $memcache->connect("localhost",11211);<br>
  $array = array("id"=>"1","name"=>"aaa");<br>
  $memcache->set("key",$array);

在此之后我检查这个数据是否在memcache中设置并显示:
一:2:{S:2:&#34; ID&#34 ;; S:1:&#34; 1&#34 ;; S:4:&#34;名称&#34 ;; S:3 :&#34; aa a&#34 ;;}
一切似乎都没问题。现在我想在nodejs中获取这些数据:
Nodejs代码:

var memcache = require('mem');
var client = new memcache.Client(11211,'localhost');
client.connect();
client.get('key', function(err,result){ 
console.log(result);
});

这里我有问题......在控制台我得到了

a:2:{s:2:"id";s:1:"1";s:4:"name";s:3:"aa a";}

我的问题是 如何进入控制台名称:aaa? 我只补充说:

console.log(result['name']); => show : undefined

请帮忙

2 个答案:

答案 0 :(得分:1)

PHP数据看起来好像是为你自动序列化。

我建议您在插入memcache之前将数组编码为JSON数据,而不是让这种情况发生,您可以使用节点轻松解码。

所以而不是

$memcache->set("key",$array);

做的:

$memcache->set("key", json_encode($array));

然后在节点中,而不是:

client.get('key', function(err,result){ 
    console.log(result);
});

做的:

client.get('key', function(err,result){ 
    var object = JSON.parse(result);
    console.log(object);
    console.log(object['name']);
});

将数据加载到JS对象中。

答案 1 :(得分:1)

尝试使用更便携的格式在系统之间共享数据。例如。 JSON。

$memcache = new Memcache;
$memcache->connect("localhost",11211);
$data = json_encode(array("id"=>"1","name"=>"aaa"));
$memcache->set("key",$data);

我希望这会在memcache中显示为

{ "id" : 1, "name": "aaa" }

然后你应该能够把它提取为JSON:

var memcache = require('mem');
var client = new memcache.Client(11211,'localhost');
client.connect();
client.get('key', function(err,result){ 
    console.log(result);
    var entry = JSON.parse(result);
    console.log(entry.name);
});