Сохраните вложенный хэш в redis через приложение node.js
Я использую node_redis, и я хотел бы сохранить структуру вроде:
{
users :
"alex" : { "email" : "[email protected]",
"password" : "alex123"},
"sandra" : { "email" : "[email protected]",
"password" : "sandra123"},
...
}
В настоящее время для каждого пользователя я создаю объект JSON:
jsonObj = { "email" : "[email protected]",
"password" : "alex123"}
и выполните
db.hmset("alex", JSON.stringify(jsonObj))
Возможно ли внедрить эту структуру в другую структуру (пользовательская?)
Как я могу настроить пользователей [ "alex" ] на эту структуру?
Ответы
Ответ 1
Насколько я знаю, в Redis нет встроенной поддержки вложенных структур, но они могут быть смоделированы, например, с помощью set + hash (аналогично иерархическому деревья). Хеши, вероятно, лучше всего подходят для хранения полей и значений одного объекта JSON. Я хотел бы сохранить каждый пользователь с префиксом (который представляет собой команду Redis ), например:
db.hmset("user:alex", JSON.stringify(jsonObj));
а затем используйте sets для группировки пользователей в один набор с ключом с именем users
. Затем я могу получить все ключи пользователей smembers и получить доступ к каждому из них по отдельности с помощью hgetall.
Ответ 2
Вы можете сохранить субструктуру в качестве объекта и сохранить ее в основной структуре, а скорее как указатель. Итак, учитывая ваш пример, я бы сделал следующее
{
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
Надеемся, что это возможное решение поможет