Массовая загрузка в Redis - PullRequest
       5

Массовая загрузка в Redis

16 голосов
/ 21 сентября 2011

Я пытаюсь загрузить большой объем данных в Redis как можно быстрее.

Мои данные выглядят следующим образом:

771240491921 SOME;STRING;ABOUT;THIS;LENGTH
345928354912 SOME;STRING;ABOUT;THIS;LENGTH

Наслева и строка переменной длины справа.Ключом будет число слева, а данными будет строка справа.

В моем экземпляре Redis, который я только что установил из коробки, и с несжатым простым текстовым файлом сэти данные, я могу получить около миллиона записей в минуту.Мне нужно сделать около 45 миллионов, что займет около 45 минут.45 минут - это слишком долго.

Существуют ли какие-либо стандартные настройки производительности, позволяющие выполнить этот тип оптимизации?Получу ли я лучшую производительность за счет разделения на отдельные экземпляры?

Ответы [ 2 ]

26 голосов
/ 21 сентября 2011

Самый быстрый способ сделать это - сгенерировать протокол Redis из этих данных. Документация для генерации протокола Redis находится на сайте Redis.io, это тривиальный протокол. Как только вы это сделаете, просто назовите его appendonly.log и запустите redis в режиме добавления только.

Вы даже можете выполнить команду FLUSHALL и, наконец, отправить данные на ваш сервер с помощью netcat, перенаправив вывод в /dev/null.

.

Это будет очень быстро, RTT ждать не нужно, это просто массовая загрузка данных.

Менее хакерский способ, просто вставьте 1000 штук за раз, используя конвейерную обработку. Это почти так же быстро, как генерация протокола, но гораздо более чистый:)

2 голосов
/ 26 сентября 2011

Мне нравится то, что предложил Сальвадор, но вот вам еще один очень понятный способ - генерировать фид для cli, например,

SET xxx yyy
SET xxx yyy
SET xxx yyy

направить его в cli на ближайшем к вам сервере.Затем сохраните, завершите работу и переместите файл данных на конечный сервер.

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