我想添加用户搜索自动完成(如Facebook的)到Heroku的我的Rails应用程序,并且我选择将它写入Node.js,因为并发需求。搜索首先从Mongo中抽取用户的好友列表(包括所有Twitter朋友,不仅仅是他们的朋友在我们的网站上),然后搜索该列表中的用户,然后搜索任何其他匹配查询的用户不在朋友搜索返回的结果中。在Node.js/Express.js中从数据库(MongoDB)缓存数组
起初相当快(约150毫秒),但对于拥有更多朋友的用户(总数超过100),加载他们的朋友阵列最终成为一个巨大的瓶颈,将搜索线性减慢到最大对于拥有1,000位朋友的用户而言(自动完成朋友搜索支持的最大数量)大约为1500毫秒。
问题是,我对Node.js和Express(它的类似Sinatra的web框架)是全新的,我不知道如何缓存friends数组,所以我只需要加载它一次(理想情况下记忆)。在Heroku的Rails中,我只是将数组加载到Memcache中,但我甚至不知道如何在Node/Express中配置Memcache,更不用说如果Heroku支持这种情况。
任何想法?
(另请注意,我为这些查询,包括朋友IDS多键索引)