Niedawno zmieniłem z memcached na redis w nodejs. W memcached node podobało mi się to, że mogę zapisać cały obiekt javascript w pamięci. Niestety nie mogłem tego zrobić w trybie redis. Na przykład, mam następujący obiekt:Przechowywanie zagnieżdżonych obiektów javascript na czerwono - 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
}
}
}
z 3rd-Eden/node-memcached może po prostu zrobić:
memcached.set("obj", obj, 12345, function(err) { });
a następnie
memcached.get("obj", function(err, data) {
console.log(data);
});
A ja mam uzyskać obiekt zapisany, Po prostu tak jest.
Problem z REDiS jest, że jeśli obiekt zapisać tak:
redisclient.set("obj", obj, redis.print);
Kiedy uzyskać wartość z
redisclient.get("obj", function(err, data) {
console.log(data);
});
Wyjście jest tylko ciąg zawierający [object Object]
.
Tak, rozumiem, że redis jest protokołem tekstowym i próbuje zrobić obj.toString(), ale wydaje się, że memcached zajmuje się obiektami, a redis nie. Myślałem, że mogę po prostu zrobić:
redisClient.set("obj", JSON.stringify(obj));
ale nie jestem pewien, czy to będzie dobre, ponieważ nie będzie szalony wysokiej I/O, a ja nie jestem pewien, czy JSON obj-> STRING być wąskim gardłem (10k + żądanie/sekundę).
Zarówno Memcached, jak i Redis przechowują dane jako ciągi znaków, ale czy redis ma wbudowaną funkcję konwersji obiektów?
myślę ** Memcached danych ** Stores as string. ** node-memcached ** automatycznie (szereguje) proces serializacji. – fardjad
@fardjad Tak, masz rację, ale czy Redis ma taki proces kompilacji lub muszę go przekonwertować ręcznie? – Deepsy