@MrOnatsky

Как ускорить установку данных из файла?

Добрый день!
Есть файл, в нем хранится около 1 млн строк. Каждая строка - это json. У каждой строки есть свой unique_id. Строки считываются с помощью fgets. Потом это строка помещается в Redis по этому unique_id. Так вот, как этот процесс сделать быстрее всего?

Первый вариант: хранить каждую строку как json, считывать ее, декодить и доставать unique_id. Но при этом придется каждый раз декодировать json.

Второй вариант: хранить строки в формате unique_id=json и использовать регулярные выражения. Но чет мне не внушает доверие этот способ.

Третий вариант: хранить строки в формате unique_id=json, но в этот раз использовать substr, а unique_id изначально делать одной длины.

Размер каждой строки примерно 500 байт. В общей сложности общий размер 500мб.

Может другие идеи подкинете? Заранее спасибо за помощь! Буду пока-что тестировать.
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 2
PavelK
@PavelK
Доброй ночи :)
А может быть будет проще "строки" хранить сразу в бинарном виде? Ведь, похоже, они не для чтения гуманоидами... Можно будетпочти та к же легко упаковывать и распаковывать: php.net/manual/ru/function.unpack.php
Sqlite не советую, ибо будет ещк дольше.
Ответ написан
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Хранить в бинарном файле в виде
<sizeof(unique_id) байт unique_id><2 байта длинна строки><json строка><600 минус длинна строки - забить нулями>

Последний сегмент не обязателен, если не требуется быстрый произвольный доступ по индексу к записям в файле.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы