Akuma
@Akuma
Веб-программист

Какую базу данных (или иной инструмент) выбрать под кэш скачанных изображений?

Здравствуйте, подскажите БД или какой-либо кэш-сервис для кэширования скачанных с внешних ресурсов изображений?

Интересует что-то, чему можно задать лимит потребляемой RAM для горячих данных, а все что не влезет хранилось бы на диске. При этом нужна возможность задания времени жизни объектам. Размер изображений до 1 Мб.

Нужен прямой доступ к хранилищу из nginx чтобы на эти изображения можно было бы указывать прямые ссылки.

Перманентность и высокая сохранность данных не требуется. Перезагрузил/все потерялось - вполне устроит.

Общее потребление RAM желательно не выше 1Гб. Планируемый общий объем около 100 Гб.

Желателен запуск в Docker, но с этим, если что, сам разберусь.

Более менее подходит S3 от Амазона (связка с nginx, ttl объектов и нет запарок с памятью), но проект не на AWS и использовать S3 извне выходит жутко дорого. Хотелось бы self-hosted решение в идеале.
Нашел https://minio.io/ но у них нет TTL объектов.

Можно конечно поставить Memcached, но он не умеет сбрасывать излишки на диск (если умеет, подскажите как), а выделить 100Гб оперативы дороговато. Redis тоже так не умеет, плюс у него есть проблемы с вытеснением старых объектов при переполнении.
  • Вопрос задан
  • 118 просмотров
Пригласить эксперта
Ответы на вопрос 4
@m0nym
Aerospike

а вообще я бы взял любую БД под метаданные (и отслеживания протухания кэша) и использовал бы обычные файлы для хранения самих файлов.

А если у вас протухание кэша одноразовое, если время жизни не продляется то еще проще - название файла равно дате его создания или дате протухания.
Ответ написан
Stalker_RED
@Stalker_RED
Ответ написан
Комментировать
@kuftachev
Я может не совсем понял суть задачи, но чем не устраивает файловый кэш самой ОС?

Если хотите объектное, но не дорогое, можете посмотреть Digital Ocean, они реализуют API S3.

Ну ещё можно отдельно виртуалку взять и дать ей нужные ресурсы, если не важна персистентность. Можно у того же DO.

В общем, мне кажется, если Вы не уверены с решением, может опишите саму бизнес-задачу, может Вам кто-то подскажет вообще другое решение.
Ответ написан
2ord
@2ord
Нужно отдавать изображения через кеширующий обратный прокси.
Linux умеет кешировать файлы с файловой системы. Нужно только дать ей (ОС) возможность выполнить эту работу. ОС сама будет кешировать наиболее часто запрашиваемые файлы и будет автоматически освобождать ресурсы в случае необходимости.
Я полагаю, что достаточно настроить Nginx и больше ничего дополнительного не нужно.
Также стоит проверить с Varnish, Squid, Apache Traffic Server.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы