tutorial node ioredis commands node.js redis

ioredis - Guardar hash anidado en redis a través de una aplicación node.js



redis tutorial (2)

Estoy usando node_redis y me gustaría guardar una estructura como:

{ users : "alex" : { "email" : "[email protected]", "password" : "alex123"}, "sandra" : { "email" : "[email protected]", "password" : "sandra123"}, ... }

Actualmente, para cada usuario creo un objeto JSON:

jsonObj = { "email" : "[email protected]", "password" : "alex123"}

y hacer un

db.hmset("alex", JSON.stringify(jsonObj))

¿Es posible incrustar esta estructura en otra estructura (la de los usuarios?) ¿Cómo podría configurar los usuarios ["alex"] con esta estructura?


Podría almacenar la subestructura como un objeto y almacenar su id dentro de la estructura principal, más bien como un puntero. Entonces, dado tu ejemplo, yo haría lo siguiente

{ users : "alex" : { "email" : "[email protected]", "password" : "alex123"}, "sandra" : { "email" : "[email protected]", "password" : "sandra123"}, ... } $x = incr idx:user hmset user:$x email [email protected] password alex123 sadd list:user $x $x = incr idx:user hmset user:$x email [email protected] password sandra123 sadd list:user $x

Espero que esta posible solución ayude.


Por lo que sé, no hay soporte nativo para estructuras anidadas en Redis, pero se pueden modelar, por ejemplo, con set + hash (similar a los árboles jerárquicos ). Hashes son probablemente más adecuados para almacenar campos y valores de un solo objeto JSON. Lo que haría es almacenar cada usuario con un prefijo (que es una convention Redis), por ejemplo:

db.hmset("user:alex", JSON.stringify(jsonObj));

y luego usar sets para agrupar usuarios en un conjunto con una clave llamada users . Luego puedo obtener todas las claves de los usuarios mediante el comando smembers y acceder a cada una de ellas individualmente con hgetall .