Сохраните вложенный хэш в Redis через приложение node.js - PullRequest
26 голосов
/ 18 апреля 2011

Я использую node_redis, и я хотел бы сохранить структуру вроде:

{
users : 
    "alex" : { "email" : "alex@gmail.com",
           "password" : "alex123"},
    "sandra" : { "email" : "sandra@gmail.com",
           "password" : "sandra123"},
    ...
}

В настоящее время для каждого пользователя я создаю объект JSON:

jsonObj = { "email" : "alex@gmail.com",
            "password" : "alex123"}

и выполняюa

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

Можно ли встроить эту структуру в другую структуру (пользовательскую?) Как я могу настроить пользователей ["alex"] с этой структурой?

Ответы [ 2 ]

23 голосов
/ 18 апреля 2011

Насколько я знаю, в Redis нет встроенной поддержки вложенных структур, но их можно смоделировать, например, с помощью set + hash (аналогично иерархическим деревьям ). Хэши , вероятно, лучше всего подходят для хранения полей и значений одного объекта JSON.Я хотел бы сохранить каждого пользователя с префиксом (который является соглашением Redis ), например:

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

, а затем использовать устанавливает для группировкипользователей в один набор с ключом с именем users.Затем я могу получить все пользовательские ключи с помощью команды smembers и получить доступ к каждому из них по отдельности с помощью hgetall .

16 голосов
/ 27 апреля 2011

Вы можете сохранить подструктуру как объект и сохранить его идентификатор в основной структуре, как указательИтак, приведя ваш пример, я бы сделал следующее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...