我正在使用 Amazon S3 为图像存储网站存储和检索图像。 问题是多个用户必须多次检索相同的图像。
是否建议使用 Redis 或 memcached 将图像文件直接存储到缓存中。
与通过 Redis 缓存提供图像相比,Amazon S3 的数据传输定价要高得多。但是直接将图像文件存储在 Redis 上似乎是一个糟糕的提议,因为我在某处读到 Redis 不适合对大数据文件进行操作。我也不明白,如果 Redis 将数据存储在内存中,它将如何存储这么多图像(除非我创建很多实例)。
是否建议将图像文件直接存储到 Redis 上,或者是否有替代方案来缓存这些图像?
pinterest和imgur直接用Redis和memcache存储图片吗?如果不是,为什么他们有这么多实例? Pinterest
最佳答案
你因创造力而受到赞誉,但你还没有找到漏洞,在这里。
首先,尝试从 elasticache 提供图像是完全不合适的。这是一个缓存。根据定义,它是不稳定的。
其次,它不是网络服务器。
第三,它不打算暴露在互联网上。
但即使这些没有说服力,您的问题似乎也是基于对定价结构在多个层面的误解。
There is no Amazon ElastiCache Data Transfer charge for traffic in or out of the Amazon ElastiCache Node itself.
从技术上讲,这是准确的,但没有帮助。
这仅与从 elasticache 到您的 EC2 实例的传输有关。您仍然需要通过 Internet 将数据返回给浏览器,无论您是从/通过 EC2 还是从 S3 返回数据,这成本都是一样的。
Data Transfer OUT From Amazon EC2 To Internet
Up to 10 TB / month $0.09 per GB
……或者……
Data Transfer OUT From Amazon S3 To Internet
Up to 10 TB / month $0.090 per GB
与此同时,CloudFront is $0.085/GB对于发送到以最低价格级别访问边缘位置的浏览器的流量,美国和欧洲。当您选择全局价格等级以外的价格等级时,您可以控制哪些边缘站点可用:
If you choose a price class that does not include all edge locations ... you're charged the rate for the least expensive region in your selected price class.
http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PriceClass.html
如果配置正确,则为 0.085 美元。
从 S3 到 CloudFront 或从 EC2 到 CloudFront 的传输是免费的。仅从 CloudFront 到 Internet 的费用。
关于caching - Redis用于缓存图像文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37681668/