点赞 Feed 流

点赞不仅影响一个数字,还会进入 Feed 场景:用户想看到“谁点赞了这篇文章”,内容流需要展示“朋友点赞”,作者需要看到点赞通知。这时系统不能只保存计数,还要保存行为关系。

本章主线

本章围绕点赞行为如何进入 Feed 展开:

  1. Feed 模型:点赞事件如何进入用户动态或内容流。
  2. 点赞记录:记录用户、内容、时间和状态,支持查询和撤销。
  3. 去重展示:同一内容多次互动、多人点赞时如何避免刷屏。

点赞记录模型

一条点赞记录可以包含:

字段含义
user_id点赞用户
target_type文章、视频、评论
target_id被点赞对象
statusliked、cancelled
created_at首次点赞时间
updated_at最近更新时间

这张表是用户态的事实来源。计数可以最终一致,但点赞记录要能支撑幂等、取消和展示。

Feed 展示策略

Feed 中的点赞展示要控制噪音:

  • 多个好友点赞同一内容时合并展示。
  • 用户取消点赞后要更新展示状态。
  • 高频点赞用户不能刷屏。
  • 旧点赞事件可以降权或过期。

这里的目标不是把每一次点赞都展示出去,而是把点赞作为内容推荐和社交证明的一种信号。

与计数的关系

点赞记录和点赞数可能短暂不一致。例如记录已经写入,Redis 计数还未回写数据库。系统需要定义查询优先级:

  • 用户是否点赞:查点赞记录或状态缓存。
  • 点赞数展示:查 Redis 计数或汇总缓存。
  • 离线分析:查行为日志和数据库。

本章把“计数系统”扩展为“互动行为系统”,为排行榜和推荐打基础。

章节