2012-04-13 33 views
3

我有一个运行多个数据库查询的Web服务,需要大约500ms-1,000ms(取决于EC2在给定联结处决定给予我多少I/O,如果调用)。用户想要的东西速度超过1000毫秒,并且可以理解。我想要做的是取得请求参数,将它们填充到redis队列中而不写入磁盘,然后在磁盘写入的异步队列中运行作业。像这样的事情在实践中通常会发生吗?我疯了吗?通过先写入redis来加速Web服务,之后的磁盘?

+0

如果这实质上只是做异步后台处理,你可能想看看[Resque](https://github.com/defunkt/resque)。 – 2012-04-13 16:02:28

回答

3

只要你的Redis定期坚持磁盘,这应该工作。您想要限制可能会丢失数据的情况的数量。对Redis来说,充分积极的持久性时间表应该适用于大多数情况。

尝试立即向用户反馈其操作已收到并正在处理的反馈。没有什么比看起来可能会提示人们再次尝试上传之前的轻微延迟更令人困惑。