Recentemente ho passato da memcached a redis in nodejs. La cosa che mi è piaciuta in node-memcached è che posso salvare l'intero oggetto javascript nella memoria. Purtroppo non ho potuto farlo in redis. Per esempio, ho ottenuto il seguente oggetto:Memorizzazione di oggetti javascript nidificati in 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
}
}
}
con la 3rd-Eden/node-memcached ho potuto solo fare:
memcached.set("obj", obj, 12345, function(err) { });
e poi
memcached.get("obj", function(err, data) {
console.log(data);
});
E io ottenere l'oggetto che ho salvato, proprio così com'è.
Il problema è che se Redis risparmio l'oggetto come questo:
redisclient.set("obj", obj, redis.print);
Quando ottengo il valore con
redisclient.get("obj", function(err, data) {
console.log(data);
});
L'uscita è solo stringa contenente [object Object]
.
Sì, capisco che redis è un protocollo basato su testo e sta cercando di eseguire obj.toString(), ma sembra memcached occuparsi di oggetti e redis no. ho pensato che avrei potuto solo fare:
redisClient.set("obj", JSON.stringify(obj));
ma non sono sicuro se questo sarà un bene, perché ci saranno folle alta I/O e non sono sicuro se il JSON obj-> stringa essere collo di bottiglia (10k + richiesta/secondo).
Memcached e Redis memorizzano i dati come string, ma i redis hanno funzionalità incorporate per la conversione di oggetti?
ritengo ** ** memcached memorizza dati come stringa. ** node-memcached ** fa (de) processo di serializzazione automaticamente. – fardjad
@fardjad Sì, hai ragione, ma Redis ha un simile processo di build-in o devo convertirlo manualmente? – Deepsy