我最近在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
}
}
}
使用3rd-Eden / node-memcached我可以做到:
memcached.set("obj", obj, 12345, function(err) { });
然后
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则不需要。我以为我可以做到:
redisClient.set("obj", JSON.stringify(obj));
但是我不确定这是否会很好,因为会有疯狂的高I / O,而且我不确定JSON obj-> string是否会成为瓶颈(10k + request /
second)。
Memcached和Redis都将数据存储为字符串,但是redis是否具有用于转换对象的内置功能?
首先,redis仅支持以下数据类型:
您需要将对象以字符串形式存储在 redis 和memcached中。
node-memcached
自动解析/字符串化数据。但是 node-redis 没有。
但是,您可以为应用程序实现自己的序列化/反序列化功能。
顺便 节点的memcached stringifies一个目的是如下:
if (Buffer.isBuffer(value)) {
flag = FLAG_BINARY;
value = value.toString('binary');
} else if (valuetype === 'number') {
flag = FLAG_NUMERIC;
value = value.toString();
} else if (valuetype !== 'string') {
flag = FLAG_JSON;
value = JSON.stringify(value);
}
它还以这种方式解析检索到的文本:
switch (flag) {
case FLAG_JSON:
dataSet = JSON.parse(dataSet);
break;
case FLAG_NUMERIC:
dataSet = +dataSet;
break;
case FLAG_BINARY:
tmp = new Buffer(dataSet.length);
tmp.write(dataSet, 0, 'binary');
dataSet = tmp;
break;
}
问题内容: 可以说我有一个由几个属性(ID,名称,Surename,Age)组成的对象(用户)。哪种方法最好在Redis中存储该对象? 将每个属性值存储在专用密钥中,例如,用户:{id}:id,用户:{id}:name,用户:{id}:surename,用户:{id}:age 将整个User对象作为JSON字符串存储在一个密钥中,例如user:{id}:json(密钥的值将如下所示:{“ ID”:
问题内容: 这就是事情- 我想在特定键下的redis中存储本机JS(node.js)对象(闪存套接字引用)。当我简单地做到这一点时,它存储为一个字符串。当我尝试获得价值时,我得到的只是一个字符串。 有机会工作吗?这是我的代码: 问题答案: 下载者:这里的上下文是SET命令,可以存储任意对象。 不,你不能那样做。您应该接受以下事实:Redis将所有内容存储为字符串(毕竟,协议是基于文本的)。Redi
我使用laravel Redis cache facade将我的对象数据(JSON编码)推送到Redis,并使用Node.js Redis模块使用关键字搜索取回数据。我的JSON字符串像这样存储在Redis中。这里的字符串破坏了我在节点上的JSON解析。Redis存储了我的json_encoded字符串,附加了一些。 有什么建议如何解决这个问题,或者我应该看看redis的其他数据类型(列表或哈希)
本文向大家介绍在JavaScript中打印JSON嵌套对象?,包括了在JavaScript中打印JSON嵌套对象?的使用技巧和注意事项,需要的朋友参考一下 要在JavaScript中打印JSON嵌套对象,请将for循环与JSON.parse()一起使用。以下是代码- 示例 要运行上述程序,您需要使用以下命令- 在这里,我的文件名为demo145.js。 输出结果 这将产生以下输出-
问题内容: 我试图遍历嵌套对象以检索由字符串标识的特定对象。在下面的示例对象中,标识符字符串是“ label”属性。我无法解决如何遍历树以返回适当对象的问题。任何帮助或建议,将不胜感激。 问题答案: 您可以创建像这样的递归函数来对对象进行深度优先遍历。 可以这样称呼
问题内容: 我想在HTML5中存储一个JavaScript对象,但是我的对象显然正在转换为字符串。 我可以使用来存储和检索原始JavaScript类型和数组,但是对象似乎无法正常工作。应该吗 这是我的代码: 控制台输出为 在我看来,该方法是在存储输入之前将输入转换为字符串。 我在Safari,Chrome和Firefox中看到了这种行为,因此我认为这是我对[HTML5 问题答案: 再次查看Appl