我最近從nodejs中的memcached切換到redis。我在node-memcached中喜歡的是我可以將整個JavaScript對象保存在內存中。可悲的是我不能在redis中這樣做。例如,我得到了以下對象:在redis中存儲嵌套javascript對象 - NodeJS
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->字符串成爲瓶頸(10k +請求/秒)。
Memcached和Redis都將數據存儲爲字符串,但redis是否具有用於轉換對象的內置功能?
我覺得** ** memcached的存儲數據的字符串。 ** node-memcached **自動執行(de)序列化過程。 – fardjad
@fardjad是的,你是對的,但Redis有這樣的內置過程,或者我需要手動轉換它? – Deepsy