Je suis récemment passé de memcached à redis dans nodejs. Ce que j'ai aimé dans node-memcached, c'est que je peux sauvegarder tout l'objet javascript dans la mémoire. Malheureusement, je ne pouvais pas le faire en redis. Par exemple, je suis l'objet suivant:Stockage des objets javascript imbriqués dans 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
}
}
}
avec le 3rd-Eden/node-memcached je pouvais faire:
memcached.set("obj", obj, 12345, function(err) { });
puis
memcached.get("obj", function(err, data) {
console.log(data);
});
Et je vais faire l'objet que je sauvé, juste la façon dont il est.
Le problème avec Redis est que si je sauve l'objet comme ceci:
redisclient.set("obj", obj, redis.print);
Quand je reçois la valeur avec
redisclient.get("obj", function(err, data) {
console.log(data);
});
La sortie est juste chaîne contenant [object Object]
. Oui, je comprends Redis est un protocole basé sur le texte et il essaie de faire obj.toString(), mais semble memcached prendre soin des objets et redis pas. Je pensais que je pouvais faire:
redisClient.set("obj", JSON.stringify(obj));
mais je ne sais pas si ce sera bon, car il y aura fou élevé d'E/S et je ne suis pas sûr si la chaîne obj-> JSON va être goulot d'étranglement (10k + demande/seconde).
Memcached et Redis stockent les données sous forme de chaîne, mais redis possède-t-il une fonctionnalité intégrée pour la conversion des objets?
Je pense ** memcached stocke les données ** comme chaîne. ** node-memcached ** effectue le processus de sérialisation (de) automatiquement. – fardjad
@fardjad Oui, vous avez raison, mais est-ce que Redis a un tel processus intégré ou dois-je le convertir manuellement? – Deepsy