redis feed流

lxf2023-05-03 16:07:01

今天Redis教程让我们来看看如何实现feed流量

redis feed流

1 简介

朋友圈,微博,都是 Feed 流产品,图片分享网站 Pinterest,花瓣网是另一种形式 Feed 流产品。很多 App 还会有一个模块,叫做动态或新闻广场,这些也是 Feed 流产品。

核心概念

  • Feed
    Feed 流中的每一个状态或新闻。例如,朋友圈中的一个状态就是一个状态。 Feed,微博中的一条微博就是一条微博 Feed。
  • Feed 流
    不断更新并呈现给用户内容的信息流。每个人的朋友圈、微博关注页等都是一个信息流 Feed 流。
  • Timeline
    Feed 一种流动,微博,朋友圈都是 Timeline 类型的 Feed 流,但由于 Timeline 类型出现最早,使用最广泛,最为人所知,有时也使用 Timeline 表示 Feed 流。
  • 关注页 Timeline
    展示其他人 Feed 新闻页面,如朋友圈、微博主页。
  • 个人页 Timeline
    展示你发送的东西 Feed 新闻页面,如微信相册、微博个人页面。

2 特点

  • 多账号内容流
    Feed 流量系统中肯定会有成千上万的账户,可以关注、关闭、添加好友、屏蔽等操作。只要满足这一点,就可以视为 Feed 设计流系统。
  • 账号关系不稳定
    由于关注、关闭等操作的存在,系统中用户之间的关系将不断变化,这是一种不稳定的状态。
  • 读写比例 100:1
    读写严重不平衡,读多写少,一般读写比例在 10:1,甚至 100:1 以上。
  • 新闻必达性要求高
    例如,在发送了一个朋友圈后,有些朋友看到了,有些朋友没有看到,如果女朋友没有看到,那么可能会有非常严重的情感矛盾,后果非常严重。

3 分类

  • Timeline
    按照发布的时间顺序排序,先发布的先看,后发布的排列在顶部,类似微信朋友圈、微博等。这也是最常见的形式。如果选择产品 Timeline 类型,也就是说,Feed流中的Feed并不多,但是每个Feed都很重要,需要用户看到。
  • Rank
    根据一定的非时间因素排序,一般根据用户的喜好排序,用户最喜欢的排在前面,第二喜欢的排在后面。这通常是假设用户可能看到的 Feed 很多,而且用户在这里花费的时间有限,那么就为用户选择用户最想看的东西 Top N 结果,场景的应用场景包括图片分享、新闻推荐、商品推荐等。

4 难点

4.1 存储

因为这个项目 Feed 比较简单,类比空间,所以可以用 MySQL存储,如果数据结构比较复杂的话, Feed 流就要使用 NoSQL 数据库,这样存储更方便高效,比如 MongoDB 或 HBase。

4.2 推送

在推送方案中,有三种方案:

模式

又称读扩散,用户主动吸引关注者 Feed 内容。
也就是说,当用户(尤其是关注很多人)触发行为时,拉出自己的动态,搜索用户的关注表,然后根据关注表搜索新的feed。如果用户过于关注,查询用户的关注列表也有很大的数据成本。
redis feed流

推模式

当用户添加它时,它也会变成写作扩散。 Feed 时间,会自动将 Feed 通知关注的人(优选)。
也就是说,当用户触发行为(如微博)时,他自己的行为被记录在行为表中,但也对应于用户的粉丝表,并为每个粉丝插入一个feed。但对于超过1万名粉丝的大V来说,为每个粉丝插入一个feed是非常昂贵的存储数据。
redis feed流

使用 Redis Sorted Sets(方便按时间排序 Timeline)维护粉丝的 Feed 集合,当博主添加时 Feed 主动向粉丝推送内容时, Feed 集合中,使用户可以方便快速地从集合中读取

推拉结合

比如微博,大部分用户的账号关系都是几百个,但是有些用户是 1000 万以上才使用。

在线推,离线拉

  • 大V发动态,只同步发布给同时在线的粉丝,离线的粉丝上线后再拉动态。完成推拉。
    redis feed流

定期推,离线拉

大V发动态后,以常驻流程的方式定期推送到粉丝动态表。

redis feed流

5 表设计

redis feed流

推荐(免费):redis教程

以上是Redis如何实现feed流的详细内容,更多请关注AdminJS的其他相关文章!