我正在使用包含关注者/关注范例的rails之上的iOS应用程序。我想实现一个新闻源,显示所有帖子,按时间顺序排序,由用户关注的人。
据我所知,有两种方法可以实现这一点:
从我所阅读/听到的内容来看,第二种解决方案似乎更好地扩展并且很有意义,但是我不愿意深入研究它,除非它真的要做到巨大的差异。由于Hartle在他的书中使用方法1,也许Rails优化了这样的过程,所以它没有。
前进哪个我应该选择?
答案 0 :(得分:3)
Chase描述了1),所以我将描述2)。
我建议你看看Redis in Action这本书,因为有一个关于如何在redis中实现小型社交网络的完整示例(包括API,结构等)。这是redis和社交网络的精彩介绍,如果你走redis路线{@ 3}}
它应该是你的起点Redis始终在RAM中,因此它会对您执行的任何查询都非常敏感。使用有序集合,redis可以通过非常快速的读写来产生出色的排名!所以是的,它会扩展得更好。但它是一个全新的主要部分,一个新的管理服务器,一个LUA脚本的新语言等...
这取决于您的目标。如果你的目标是拥有很多用户,很多排名,并且仍然有很好的表现,使用redis绝对是一个很好的选择。
恕我直言,如果您已经知道必须进行扩展,那么从您在1中所说的开始是很脏的。这就像用不同的技术做两次同样的事情,浪费劳动力以获得更好的短期安排。
答案 1 :(得分:2)
从解决方案1开始,因为它最初将更容易实现和维护。随着您在Puma或Unicorn上增加应用程序默认Rails所需的扩展,可以处理大约2000到2500个并发请求,这对于小型应用程序来说非常有用。
我建议创建一个返回json的api(控制器)。当iOS应用程序使用用户密钥和id调用api时,从数据库中获取帖子列表并按日期排序。小心处理这里的nils,因为这可能会导致日期排序中的恶意崩溃。然后将该列表序列化为json并将其发送到您的iOS应用程序。
如果你是Rails的新手,Redis可以讨厌合作,但运气好的话,你很快就会到达那里。