Подтвердить что ты не робот

Сохраните вложенный хэш в 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" ] на эту структуру?

4b9b3361

Ответ 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

Надеемся, что это возможное решение поможет