Rails/Heroku 的基于磁盘的缓存解决方案?

Disk based caching solution for Rails / Heroku?

我构建了一个托管在 Heroku 上的 Rails API。 API 使用 memcached 缓存非常大的序列化对象以加快 API 响应时间。这很好用,但随着我的 API 获得更多流量,memcached 的成本简直是疯了。现在我为 2.5GB 支付 160 美元/月。

有没有更划算的基于磁盘的解决方案(当然要牺牲速度)?有没有人用 Mongo_Store gem 试过 MongoDB 作为他们在 Rails 中的 cache_store?对于 Heroku 上的 SSD MongoDB,price/GB 似乎便宜了大约 3-7 倍。例如,我可以以 240 美元/月的价格获得 40GB MongoDB 集群。

现在将 Memcached 与 dalli gem 一起使用的一大优势是我的大对象被压缩了。 MongoDB 是为我做这个,还是我需要手动做这个?

我认为您在这里有几个选择,但最简单的是您可以直接使用 AWS Elasticache Memcached,它便宜得多(2.78GB 每月 64 美元,30GB 每月 164 美元,更大的实例)有更好的比率)。您必须弄清楚如何授予安全组访问您的 Heroku 应用程序的权限,或者通过 EC2 实例代理读取。

更广泛地说,如果您使用 memcached facet 来加快 API 响应时间,那么将序列化对象存储在磁盘上与内存中似乎会大大抵消任何速度优势 - 做您有其他建议的基准吗?如果不缓存对象需要多长时间生成?即使是 SSD 读取也会比 memcached 读取慢一个数量级。