【发布时间】:2011-06-16 16:37:24
【问题描述】:
我想在 Heroku 上的 Rails 应用程序中添加用户搜索自动完成功能(如 Facebook 的),由于并发要求,我选择用 Node.js 编写它。搜索首先从 Mongo 中提取用户的朋友列表(id 的,包括所有 twitter 朋友,而不仅仅是他们在我们网站上的朋友),然后在该列表中搜索用户,然后再次搜索与该查询匹配的任何其他用户不在好友搜索返回的结果中。
起初这相当快(约 150 毫秒),但对于有更多朋友(例如,总共 100 个以上)的用户来说,加载他们的朋友数组最终成为一个巨大的瓶颈,线性地减慢搜索速度到最大值拥有 1,000 个好友的用户大约需要 1500 毫秒(自动完成好友搜索支持的最大数量)。
问题是,我对 Node.js 和 Express(它的类似 Sinatra 的 Web 框架)完全陌生,而且我不知道如何缓存 Friends 数组,所以我只需要加载一次(最好加载到内存中) )。在 Heroku 上的 Rails 中,我只需将数组加载到 Memcache 中,但我什至不确定如何在 Node/Express 中配置 Memcache,更不用说 Heroku 是否支持了。
有什么想法吗?
(另外请注意,我正在为所有这些查询建立多键索引,包括好友 ID)
【问题讨论】:
标签: memcached mongodb heroku node.js