2016-06-07 1 views
0

J'utilise Amazon S3 pour stocker et récupérer des images pour un site de stockage d'images. Le problème est que plusieurs utilisateurs doivent récupérer la même image plusieurs fois.Redis pour la mise en cache des fichiers image?

Est-il recommandé d'utiliser Redis ou memcached pour mettre en cache les fichiers image en les stockant directement sur celui-ci.

La tarification Amazon S3 pour le transfert de données est beaucoup plus élevée que celle utilisée pour la diffusion d'images via le cache Redis. Mais stocker des fichiers image directement sur Redis semble être une mauvaise proposition, car j'ai lu quelque part que Redis n'est pas bon pour fonctionner sur de gros fichiers de données. Aussi, je ne comprends pas que si Redis stocke des données sur la mémoire, comment va-t-il stocker autant d'images (à moins que je fasse beaucoup d'instances).

Est-il conseillé de stocker des fichiers image directement sur Redis ou existe-t-il une alternative pour la mise en cache de ces images?

Est-ce que pinterest et imgur utilisent Redis et memcache pour stocker des images directement? Si non, pourquoi ont-ils tant de cas? Pinterest

+0

Le stockage d'images dans Redis semble être une mauvaise idée car il remplira rapidement la mémoire RAM disponible sur le serveur Redis. De plus, votre affirmation selon laquelle «le prix S3 pour le transfert de données est beaucoup plus élevé que par rapport à la diffusion d'images via Redis» me semble incorrecte. Je pense qu'il te manque quelque chose. La manière standard de mettre en cache des images consiste à utiliser un CDN tel que CloudFront, CloudFlare ou MaxCDN. –

+0

@MarkB J'ai regardé dans CloudFront et j'ai trouvé que le prix pour cela est (0,85 - 0,25 $), ce qui est plus sinon même pour les prix S3. AWS indique: "Il n'y a pas de frais de transfert de données Amazon ElastiCache pour le trafic entrant ou sortant du nœud Amazon ElastiCache lui-même.". [Ici] (https://aws.amazon.com/elasticache/pricing/) – Mayank

+0

@MarkB Aussi pouvez-vous me dire si ce n'est pas pour la mise en cache des images directement, qu'est-ce que pinterest et imgur utilisent Redis et Memcached pour? – Mayank

Répondre

3

Vous obtenez le crédit pour la créativité, mais vous n'avez pas trouvé une faille, ici. Tout d'abord, il est tout à fait inapproprié d'essayer de fournir des images à partir d'un élastomex. C'est un cache. C'est volatile par définition. En second lieu, ce n'est pas un serveur Web. Troisièmement, il n'est pas destiné à être exposé à Internet. Mais même si elles ne sont pas convaincantes, votre question semble fondée sur une mauvaise compréhension de la structure de prix à plusieurs niveaux.

Il n'y a pas de frais de transfert de données Amazon ElastiCache pour le trafic entrant ou sortant du nœud Amazon ElastiCache lui-même.

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

Techniquement, cela est exact, mais il est pas utile.

Cela ne concerne que le transfert d'elasticache vers votre instance EC2. Vous devez toujours renvoyer les données au navigateur, via Internet, et cela coûte le même prix, que vous le retourniez depuis/par EC2 ou depuis S3.

Transfert de données à partir Amazon EC2 à Internet

Jusqu'à 10 To/mois 0,09 $ par Go

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

... ou ...

Dat un transfert OUT d'Amazon S3 à Internet

Jusqu'à 10 To/mois 0 $.Par Go 090

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

Pendant ce temps, CloudFront is $0.085/GB pour le trafic envoyé aux navigateurs qui accèdent à des emplacements de pointe dans la classe la plus basse des prix, des États-Unis et en Europe. Et vous contrôlez les emplacements de bord disponibles lorsque vous sélectionnez une classe de prix autre que la classe globale:

Si vous choisissez une classe de prix qui n'inclut pas tous les emplacements de bord ... région la moins chère de votre classe de prix sélectionnée.

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

C'est 0,085 $ si elle est configurée correctement.

Le transfert de S3 vers CloudFront ou de EC2 vers CloudFront est gratuit. Seulement la charge de CloudFront à Internet.