Создание уникальных хеш-ключей с помощью 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, который может быть произвольно вложенным по своей природе.