Redis и управление версиями объектов - PullRequest
2 голосов
/ 06 апреля 2011

Как люди справляются с изменениями в схемах объектов Redis - добавляя или удаляя свойства из объектов?

Ответы [ 2 ]

3 голосов
/ 27 мая 2011

Обмен опытом из собственного опыта (годичный проект с тысячами пользовательских запросов в секунду).

Обычно для меня было два сценария:

  1. Добавить новую информацию всуществующие структуры (например, поле «email» для пользователя)
  2. Удаление или изменение существующих значений в существующих структурах (например, изменение формата некоторого поля)
  3. Удаление содержимого из базы данных

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

Для 2 и 3 это зависит от того, могут ли данные быть изменены / рассчитаны / исправлены до выпуска или после.Я запускаю работу с базой данных, которая выполняет всю работу за меня, для нескольких миллионов ключей это занимает значительное время (минуты).Если это задание можно запустить только после того, как я выпущу новый код - тогда изящное уменьшение очень помогает, я просто освобождаю и запускаю задание.

PS: Если вы затрагиваете много ключей в redis, то этоочень важно использовать http://redis.io/topics/pipelining Экономит много времени.

  1. Возьмите список всех затронутых (т.е. вы хотите исправить их любым способом) ключей или записей в конвейере
  2. Делай с ними что хочешь.Если это возможно, попробуйте поставить в очередь операции записи в конвейер.
  3. Отправлять операции с очередями в Redis.

Также очень важно создавать индексы для ваших структур.Я держу наборы с идентификаторами.Затем я просто перебираю SMEMBERS (set_with_ids).Это намного лучше, чем перебирать команду KEYS.

0 голосов
/ 07 апреля 2011

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

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