2016-06-07 7 views
0

Я использую Amazon S3 для хранения и получения изображений для хранилища изображений. Проблема заключается в том, что несколько пользователей должны получать одно и то же изображение несколько раз.Redis для кэширования файлов изображений?

Предлагается использовать Redis или memcached для кэширования файлов изображений, сохраняя их непосредственно на нем.

Цена Amazon S3 для передачи данных намного выше, чем по сравнению с обслуживанием изображений через кеш Redis. Но хранение файлов изображений непосредственно на Redis кажется плохим предложением, потому что я где-то читал, что Redis не подходит для работы с большими файлами данных. Также я не понимаю, что если Redis хранит данные в памяти, как будет храниться так много изображений (если только я не делаю много примеров).

Желательно ли хранить файлы изображений непосредственно на Redis или есть альтернатива для кэширования этих изображений?

Использовать ли pinterest и imgur Redis и memcache для хранения изображений напрямую? Если нет, почему у них так много случаев? Pinterest

+0

Сохранение изображений в Redis кажется ужасной идеей, так как оно быстро заполнит доступную оперативную память на сервере Redis. Также неверно звучит ваше утверждение о том, что «цена S3 для передачи данных намного выше, чем по сравнению с обслуживанием изображений через Redis». Я думаю, что там что-то не хватает. Стандартный способ кэширования изображений - использовать CDN, например CloudFront, CloudFlare или MaxCDN. –

+0

@MarkB Я посмотрел в CloudFront, и я обнаружил, что цена для него ($ 0.85 - $ 0.25), которая больше, если не такая же для ценообразования S3. В то время как AWS говорит: «Нет платы за передачу данных Amazon ElastiCache за трафик в или из самого узла Amazon ElastiCache». [Здесь] (https://aws.amazon.com/elasticache/pricing/) – Mayank

+0

@MarkB Также вы можете сказать мне, если не для кеширования изображений напрямую, что для pinterest и imgur используют Redis и Memcached? – Mayank

ответ

3

Вы получаете кредит на творчество, но здесь вы не нашли лазейки.

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

Во-вторых, это не веб-сервер.

В-третьих, он не предназначен для доступа в Интернет.

Но даже если они не являются убедительными, ваш вопрос, по-видимому, основан на непонимании структуры ценообразования на нескольких уровнях.

Плата за передачу данных Amazon ElastiCache для трафика в или из самого узла ElastiCache Amazon.

https://aws.amazon.com/elasticache/pricing/

Технически, это точно, но это не полезно.

Это относится только к передаче от эластичной резины к экземпляру EC2. Вам все равно придется возвращать данные в браузер через Интернет, и это стоит того же самого, независимо от того, возвращаете ли вы его из/через EC2 или из S3.

Передача данных OUT От Amazon EC2 Для Интернет

до 10 ТБ/месяц $ 0,09 за Гб

https://aws.amazon.com/ec2/pricing/

... или ...

Dat a Передача OUT из Amazon S3 в Интернет

До 10 TB/month $ 0.090 за GB

https://aws.amazon.com/ec2/pricing/

Между тем, CloudFront is $0.085/GB для трафика, передаваемого в браузеры, которые имеют доступ края места в самой низкой ценовой категории, США и Европе. И вы контролируете, какие местоположения краев доступны, если вы выберете ценовой класс, отличный от глобального:

Если вы выберете класс цены, который не включает все краевые местоположения ..., вы начисляете ставку за наименее дорогой регион в выбранном ценовом классе.

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PriceClass.html

Это $ 0,085, если настроена правильно.

Плата за перевод с S3 на CloudFront или с EC2 на CloudFront не взимается. Только заряд от CloudFront к Интернету.