在redis-NodeJS中存储嵌套的javascript对象

在redis-NodeJS中存储嵌套的javascript对象,javascript,node.js,object,redis,memcached,Javascript,Node.js,Object,Redis,Memcached,我最近在nodejs中从memcached切换到redis。我喜欢node memcached,因为我可以将整个javascript对象保存在内存中。遗憾的是,我在redis无法做到这一点。例如,我得到了以下对象: var obj = { name: "Hello world!", author: "admin", user: { "yolololo" : { "id": "352asdsafaseww",

我最近在nodejs中从memcached切换到redis。我喜欢node memcached,因为我可以将整个javascript对象保存在内存中。遗憾的是,我在redis无法做到这一点。例如,我得到了以下对象:

var obj = {
    name: "Hello world!",
    author: "admin",
    user: {
        "yolololo" : {
             "id": "352asdsafaseww",
             "server": 5,
             "data" : {
                  x: 1, 
                  y: 1,
                  z: 50
             }
        },
        "yolol" : {
             "id": "358dsa",
             "server": 7
        }
    }
}
有了这些,我可以做到:

memcached.set("obj", obj, 12345, function(err) { });
redisClient.set("obj", JSON.stringify(obj));
然后

memcached.get("obj", function(err, data) {
    console.log(data);
});
我会得到我保存的对象,就这样

redis的问题是,如果我像这样保存对象:

redisclient.set("obj", obj, redis.print);
当我用

redisclient.get("obj", function(err, data) {
    console.log(data);
});
输出只是包含
[object object]
的字符串

是的,我知道redis是基于文本的协议,它正在尝试执行obj.toString(),但memcached似乎负责处理对象,而redis则没有。 我想我可以做到:

memcached.set("obj", obj, 12345, function(err) { });
redisClient.set("obj", JSON.stringify(obj));
但我不确定这是否会好,因为会有高得离谱的I/O,我也不确定JSON obj->字符串是否会成为瓶颈(10k+请求/秒)

Memcached和Redis都将数据存储为字符串,但Redis是否具有用于转换对象的内置功能?

首先只支持以下功能:

  • 名单
  • 设置
  • 散列
  • 排序集
  • 您需要将对象作为字符串存储在redis和中

    自动分析/字符串化数据。但事实并非如此

    但是,您可以为应用程序实现自己的序列化/反序列化功能

    节点memcached字符串化对象的方式是:

    它还解析检索到的文本:


    我认为memcached将数据存储为字符串。node memcached会自动进行(反)序列化处理。@fardjad是的,你说得对,但Redis是否有这样的内置处理,或者我需要手动转换它?