背景
我有一个Web服务,它接受1到20个对象的输入,然后对每个大约需要100-300ms的操作执行操作。该操作的结果平均有效一小时,输出是字符串和整数的散列。平均请求有5个对象,因此响应时间大约为1000毫秒。我希望缓存命中率相当低,直到服务获得牵引力 - 让我们现在称之为10%的命中率。
我的应用程序托管在Heroku上,出于这个问题的目的,我不想移动它。
我尝试过的事情
我开始使用IronCache的免费产品(通过Heroku附加组件),并进行了一些非常粗略的测试。对于简单对象,put()和get()请求大约需要20-40ms。不支持批处理操作,因此假设100%的缓存未命中,这将为每个对象添加20-40ms的响应。在我的5个对象的平均情况下,这大约是150毫秒。
IronCache不支持批量操作,但似乎这可以解决我的问题。
我的问题
鉴于此配置文件,在Heroku上使用托管缓存(键/值)存储是否值得?如果是这样,哪个?
答案 0 :(得分:1)
我使用了MemCachier,一个Heroku的附加组件,提供25MB的免费套餐。他们使用Dalli作为他们的Ruby库,它支持get_multi,以及一个多功能,它接受一个块并推迟发送直到块结束。
答案 1 :(得分:0)
如果批处理操作会让缓存值得你,你应该使用redis,它支持它们。