2010-07-22 3 views
2

Я предварительно создаю 20 миллионов страниц gzipped html, сохраняю их на диске и обслуживаю их с помощью веб-сервера. Теперь мне нужны эти данные для доступа к нескольким веб-серверам. Rsync-in файлов занимает слишком много времени. Кажется, что NFS может занять слишком много времени.Каков наилучший способ кэширования двоичных данных?

Я рассмотрел использование хранилища ключей/значений, таких как Redis, но Redis сохраняет только значения в качестве значений, и я подозреваю, что он задушит файлы gzip.

Мое настоящее мышление заключается в использовании простой таблицы MySQL/Postgres со строковым ключом и двоичным значением. Прежде чем реализовать это решение, я хотел бы узнать, есть ли у кого-нибудь еще опыт в этой области и может предложить совет.

ответ

2

У меня хорошая репутация о Редисе, это одно.

Я также слышал чрезвычайно позитивные вещи о memcached. Он также подходит для двоичных данных.
Возьмите Facebook, например: эти ребята используют memcached, а также для изображений!
Как вы знаете, изображения находятся в двоичном формате.

Итак, получите memcached, возьмите машину, чтобы использовать ее, связующее для PHP или все, что вы используете для своих сайтов, и от вас! Удачи!

+0

Моя проблема с memcached заключается в том, что если питание отключается, я теряю свои данные. Чтобы в дополнение к восстановлению после отключения питания, я должен перестроить свой кеш. – Scott

+0

Это зависит от того, что вы ищете, и что такое бюджет. Подумайте о наличии «зеркал» или данных, чтобы даже если одна машина терпит неудачу, другие (ы) могут служить. Кроме того, если сервер выходит из строя и является единственным, вы можете написать сценарий для повторной загрузки данных из hdisk или что-то при запуске. Есть много вариантов. Я бы не пошел на базу данных ACID, так как у нее много накладных расходов, которые не нужны для этой цели. Он также не кэширует, насколько я знаю, данные таким образом, что memcached делает, который на последнем предназначен специально для вашей цели, таким образом оптимизирован для этого – Poni

+0

Я согласен с базой данных, но мне дали роскошь изучения нескольких вариантов, поэтому я понял, что на самом деле. – Scott

1

Прежде всего, зачем кешировать gzips? Задержка сети и время передачи на порядок выше, чем время процессора, затрачиваемое на сжатие файла, поэтому сделать это на лету, возможно, самым простым решением.

Однако, если у вас определенно есть необходимость, я не уверен, что центральная база данных будет быстрее, чем общий ресурс (конечно, вы должны измерить, не угадывая эти вещи!). Простым подходом может быть размещение исходных файлов на общем ресурсе NFS, а также каждый сервер gzip и кеширование их локально по требованию. memcached (как предлагает Пони) также является хорошей альтернативой, но добавляет слой сложности.

+0

Я в процессе бенчмаркинга файловой системы, postgres и tokyo кабинета. Я обновляю свой вопрос с результатами. – Scott