Redis концептуально отличается от традиционных баз данных SQL, которые я использую, и я пытаюсь выяснить, подходит ли это для моего проекта ... Я искал вокруг, но не могу найти ответ на мой вопрос.Redis и Querying Values
У меня есть набор пользователей, которые мне нужно хранить, каждый с уникальным идентификатором и несколькими значениями (такими как их имя), связанными с ним. Похоже, что я могу просто сохранить их как хэш:
user:fef982dcfe1a7bcba4849b4c281bba95
"username" "andrewm" "name" "Andrew"
У меня также есть куча сообщений, которые я хочу, чтобы хранить, каждый из которых имеет несколько свойств, таких как отправитель и получатель:
message:1a7bcba4849b4c281bfef98a952dcfeb
"sender" "fef982dcfe1a7bcba4849b4c281bba95" "recipient" "82dcfe1a7bcba4849b4c281bba95fef9" "message" "Hi!"
Мой вопрос: как я могу получить все сообщения, отправленные конкретным пользователем (обозначенные их хэшем). Должен ли я использовать традиционную реляционную базу данных или даже базу данных NoSQL, такую как MongoDB (которую я использовал раньше)? Если да, есть ли у кого-нибудь предложения для высокопроизводительных магазинов? Я не буду делать истинный поиск (т. Е. MySQL LIKE
запросов) - просто поиск ключевых значений.
Большое спасибо за это объяснение ... это было очень полезно. Я посмотрю на это дальше :) –
Привет, спасибо, очень полезно. Если «Добавление/удаление сообщения будет означать поддержание *: отправленных и полученных:», потребуется ли больше места для хранения данных и, следовательно, занимает больше места в памяти? Может ли быть проблемой для производительности, если этот вид «мульти-магазина» выполняется часто? Спасибо за вашу помощь. – Loic
Да, он представляет больше данных для хранения. Что касается производительности, вы должны использовать конвейерную обработку, чтобы амортизировать влияние выполнения нескольких команд для данной операции. См. Http://redis.io/topics/pipelining –