Создание уникальных хеш-ключей с помощью redis в NodeJS

Я использую клиент node_redis для node.js. У меня есть структурированные данные, которые я сейчас пытаюсь сохранить в Redis. Всякий раз, когда я пытаюсь добавить больше значения ключа к тому же набору, он переопределяется. Я преследую это в течение нескольких дней, и я обнаружил, что мне нужно добавить уникальных участников, а затем я могу добавить данные в соответствии с ними. Я выполнил эту часть, определив уникальные ключи на уровне пользователя, но я хочу создать хеш-ключи с комбинацией компании и имени пользователя, чтобы она всегда была уникальной, если она идет в облаке.

данные в моем jsonMessage

{
  "Company": "ABC",
  "Users": [
    {
      "Username": "john@gmail.com",
      "Authenticated": false
    },
    {
      "Username": "chris@gmail.com",
      "Authenticated": true
    },
    {
      "Username": "shaun@hotmail.com",
      "Authenticated": true
    }
  ]
}

Что я пробовал до сих пор:

var message = JSON.parse(jsonMessage);

message.Users.forEach(function(user,i){

    redisClient.sadd("users", "user:" + i);

    redisClient.hmset("user:" + i, "Username", user.Username, "Authenticated", user.Authenticated);

});

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

Каким должно быть точное связывание компании с ее пользователями в redis.

1 ответ

Решение

Все зависит от того, как вы хотите получить доступ к данным, но, например, вы можете попытаться сделать это так:

Чтобы соответствовать вашей текущей структуре, вы можете использовать что-то вроде этого:

set "company:ABC:users:0:username" "john@gmail.com"
set "company:ABC:users:0:authenticated" 0
set "company:ABC:users:1:username" "chris@gmail.com"
set "company:ABC:users:1:authenticated" 1

С более минимальным подходом:

set "ABC:john@gmail.com" 0
set "ABC:chris@gmail.com" 1

С потенциально большим количеством данных для хранения позже:

hset "ABC:john@gmail.com" "authenticated" 0
hset "ABC:chris@gmail.com" "authenticated" 1

Все эти подходы означают, что существуют разные способы доступа к данным, что, конечно, показывает, что вы можете структурировать свои данные разными способами. Перейдите на этот сайт, где вы можете попробовать все эти команды онлайн:

Вы должны помнить, что в Redis не может быть глубоко вложенных структур. У вас могут быть хэши, но они одноуровневые, и несколько уровней вложенности обычно эмулируются с использованием сложных ключей, таких как "a:b:c" или "abc" - вы должны помнить об этом, когда ваши исходные данные представляются в виде JSON, который может быть произвольно вложенным по своей природе.

Другие вопросы по тегам