求思路,PHP-redis如何实现如同微博订阅服务

发布于 2022-08-29 18:13:12 字数 204 浏览 8 评论 0

需求是这样的,玩过微博的大家都知道,这以下特点

  1. 可以关注很多人
  2. 每个人都可以发微博
  3. 当我隔一段时间重新登录微博,会自动将我关注的人发的最新微博,按照时间顺序展示

请问,如何用php和redis实现这样一个订阅,希望你能给个思路,或者参考资料

(求思路,不要具体答案,但希望尽量详尽)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

少女净妖师 2022-09-05 18:13:12

实际上这个是一个伟大而庞杂的系统,我说说我的思路,要想知道关注的人发了那些微博,有两种方式,一个是推,一个是拉

推的方式是每一个发微博的人都会将自己发的微博ID推送到自己的所有粉丝,显然对于范爷这样的大户,这样是会死人了

拉的方式是每个人自己主动去拉自己关注的人的所有最新的微博,如果关注的人比较多,也是不可行的

总体来说推拉是要结合的,具体怎么结合很难说,每个用户都会有自己的list,用来存储未读的微博ID,然后不断的去推拉,无论是推拉过程肯定都是背后的服务在处理,不是实时的

获取微博也不是原来想象中的SQL的select批量获取,全部是原子性的操作,比如有100条未读的微博,会循环100次从缓存中获取,或者使用redis的mutil批量获取,然后没有读到的会回源到数据库进行获取,可能会觉得这样很慢,不过实际使用过程中这样并不慢,因为使用了大量的缓存

ゝ杯具 2022-09-05 18:13:12

新浪分享过好几次它们队列系统的架构,建议你找找 infoq 看看。
这里没办法详细给你总结,但大概思路它们已经分享了。
主要就是用集合和链表,加上楼上说的推拉。很复杂,真的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文