粉丝拉取模式:
上一节我们大致讲了一下redis推送微博的思路,不过推送微博还是存在一个明显的缺陷:假如这个用户有几千万粉丝,那么redis是不是就需要去创建几千万个推送链表?
因此我们需要转变思路,将微博推送转换为粉丝主动拉取!
发布微博:
发布微博的时候,我们需要把微博的信息转换成哈希 并且存贮在拉取表和个人文章表
展示微博:
首先获取所有关注的人,获取上次拉取微博的位置,根据上次拉取的微博位置来拉取数据。然后给微博排序,设置新的拉取的位置,写入到已拉取表中,获取微博的详细内容,最后获取粉丝和关注数。进行展示
问:第一次我拉取了A的5,6,7 三条微博, 下次刷新页面, 我们如何从>7的微博开始拉取?
解决:拉取时,设定一个lastpull 的时间点, 下次拉取时,取>lastpull时间节点的微博
问:关注了很多人,如何拉取?
解决:循环自己的关注列表,逐个取他们的新微博
问:取出来之后放在哪儿?
答: pull:$userid的链接里
问:如果个人中心,只有前1000条
答: ltrim,只取前1000条
问:如果我关注 A,B两人, 从2人中,各取3条最新信息,这3+3条信息, 从时间上,是交错的, 如何按时间排序?
答:我们发布时, 是发布的hash结构, 不能按时间来排序.
解决:同步时,取微博后,记录本次取的微博的最大id,下次同步时,只取比最大id更大的微博