Geçtiğimiz günlerde nodejs'de memcached'ten redis'e geçtim. Düğüm-memcached'de sevdiğim şey, tüm javascript nesnesini belleğe kaydedebildiğimdi. Ne yazık ki bunu redis'te yapamadım. Örneğin, ben aşağıdaki nesneyi var: 3rd-Eden/node-memcached ileYuvalanmış javascript nesnelerini redis'te saklama - 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
}
}
}
Sadece yapabileceği:
memcached.set("obj", obj, 12345, function(err) { });
ve sonra
memcached.get("obj", function(err, data) {
console.log(data);
});
Ve ben kurtardı nesneyi elde edersiniz, olduğu gibi.
REDIS ile sorun olduğunu böyle nesneyi kaydederseniz:
redisclient.set("obj", obj, redis.print);
ben çıkış sadece dize [object Object]
içeren bir
redisclient.get("obj", function(err, data) {
console.log(data);
});
ile değer elde
.Evet, redis’in metin tabanlı bir protokol olduğunu ve obj.toString() işlevini denediğini anlıyorum, ancak memcached nesnelerin dikkatini çekiyor ve redis yapmadı. ben sadece yapabileceğini düşündüm:
redisClient.set("obj", JSON.stringify(obj));
ama orada deli yüksek I/O olacak ve emin değilim çünkü bu, iyi olacak olmadığından emin değilim JSON obj-> dize olacak eğer darboğaz olun (10k + istek/saniye).
Hem Memcached hem de Redis, verileri dize olarak saklar, ancak redis, nesneleri dönüştürmek için yerleşik özelliklere sahiptir? Tüm redis ait
Ben dize olarak ** memcached ** saklar verileri düşünüyorum:
Ayrıca alınan metni this way ayrıştırır. ** node-memcached ** (de) serileştirme işlemini otomatik olarak yapar. – fardjad
@fardjad Evet, haklısın, ama Redis'in böyle bir yerleşik süreci var mı yoksa el ile mi dönüştürmem gerekiyor? – Deepsy