Недавно я переключился с memcached на redis в nodejs. То, что мне понравилось в node-memcached, было то, что я могу сохранить весь объект javascript в памяти. К сожалению, я не мог сделать это в redis. Например, я получил следующий объект:Хранение вложенных объектов javascript в redis - 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, и я не уверен, что если obj-> строка JSON будет быть узким местом (10k + запрос/секунда).
Как Memcached, так и Redis хранят данные как строку, но имеет ли redis встроенную функцию для преобразования объектов?
Я думаю ** ** Memcached хранит данные в виде строки. ** node-memcached ** автоматически выполняет сериализацию (de). – fardjad
@fardjad Да, вы правы, но у Redis такой встроенный процесс, или мне нужно его вручную преобразовать? – Deepsy