在有用户有帖子的情况下,每个用户都有一个代表新闻Feed的视图(很像是登录的Tumblr帐户),每个帖子概述都有一个指向评论的链接帖子,这里最好的缓存策略是什么(在Rails 4堆栈上)?
假设有5个用户,ABCDE,每个用户都订阅了他们右边的2个用户(A订阅了B和C,B订阅了C和D等)并且只有他们订阅的用户显示他们的新闻提要视图。
编辑:
假设采用扇出写入方法,其中每个用户在Redis中都有一组唯一的(post id),并且在每个post
创建时,新帖子的id都附加到每个帖子创作者的朋友'集。 redis集充当索引,用户的提要通过单个SQL查询获取。
考虑到这一点,缓存每个Feed应该是这种方法的问题:
@feed_array
写入memcached @feed
@feed
写入memcached @feed_array
匹配,则从memcached返回@feed
。否则新的SQL查询并覆盖memcached中的@feed
这种方法意味着在迭代@post
div时对视图的缓存使用很容易,但是如何处理注释计数呢?
答案 0 :(得分:4)
与您正在使用的应用程序堆栈无关,我认为缓存方法不会在您的情况下扩展。类似于Twitter的功能通常通过去规范化来处理。
在您的情况下,这可能意味着为每个用户实施一个Feed模型,添加关注者的新帖子,以便从他自己的Feed中加载用户的“时间轴”,而不是加入他的所有用户(可能成千上万的朋友。