Redis - обработка изменений в структурах данных

StackOverflow https://stackoverflow.com/questions/4606408

  •  25-09-2019
  •  | 
  •  

Вопрос

Я экспериментировал с Redis, и мне очень нравится масштабируемость, которую она приносит к столу. Однако мне интересно, как обрабатывать изменения в структуре данных для системы, которая уже в производстве.

Например, позвольте мне сказать, что я собираю информацию о пользователе, и я использую user_id в качестве ключа, и выбросите другие данные о пользователе как значения разделения запятыми.

user_id: name, email, etc.

Теперь, скажем, после 100 000 записей, я понимаю, что мне нужно было запросить email - Как бы я теперь сделал снимок существующих данных и создаю новый индекс для этого?

Это было полезно?

Решение

Из моего понимания Redis это потребует что-то, что Redis не предназначен для этого. Вы должны будут зацикливаться, хотя все ваши записи (используя клавиши *), а затем измените порядок данных и сделайте новый ключ. Лично, лично рекомендую использовать список вместо запятой строки. В списке вы можете перенастроить его изнутри Redis. Список Redis выглядит следующее:

"Colum" => [0] c.mcgaley@gmail.com
            [1] password
            [2] Something

Я строю приложение, в котором я столкнулся с той же проблемой. Я решил его, имея список для всех информации пользователя, а затем иметь ключ с электронной почтой пользователя со значением идентификатора пользователя. Так что моя база данных будет что-то подобное:

"Colum" => [0] c.mcgaley@gmail.com
            [1] password
            [2] Something
"c.mcgaley@gmail.com" => "Colum"

Поэтому я мог запрашивать удостоверение личности или по электронной почте и все же получить необходимую информацию.

Извините, что я не смог прямо ответить на ваш вопрос. Просто надеюсь, что это помогло.

Другие советы

Использование CSV не является отличным идеей, если вы хотите поддерживать изменения. Вам необходимо использовать сериализатор, который обрабатывает отсутствующие / новые значения, если все находится в одном клавише, или вы можете использовать хэш Redis, который дает вам названные подкладки. В любом случае, в любом случае, вы можете добавить / удалить поля с единственным требованием в том, что ваш код знает, что делать, если он считывает запись без нового значения.

Чтобы разрешить поиску по электронной почте, вам нужно добавить индекс - в основном ключ (или список) для каждого электронного письма с идентификатором пользователя в качестве значения. Вам нужно будет заполнить этот индекс, получив все клавиши один раз, а затем убедитесь, что вы обновите его при изменении электронных писем.

Вы могли бы повторить все ключи и хранить их с другим идентификатором, но это, вероятно, больше проблем, чем стоит.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top