如何实现看过的内容不再出现功能?

像抖音那种每次看完一个视频之后,这个视频都不会再出现,是标记为已读吗?

我想的就是单独建一张表,用来维护用户和已读视频。

查询的时候需要查询视频且不在自己已读列表里。

但是每看一个就要改一个状态吧。

那像快手这种该如何实现这个功能呢?每次查询出来的数据都改为已读?查询多少个视频,就将多少个视频置为已读插入到表?

抖音是如何实现的呢?这么实现好吗,还有其他实现方式吗?

非常感谢各位不吝赐教,谢谢。

阅读 5.2k
3 个回答

每个用户在redis记录一个播放历史

用户曝光之后, 客户端将曝光行为上报到上报服务, 写入redis, 推荐服务在下发物品的时候走过滤逻辑, 将物品过滤掉

一般来说这个播放历史是有长度限制的, 不是无限的

用redis是比较好的解决方案.
至于修改状态,可以是客户端在曝光之后上报,也可以是批量上报.
如果页面的size比较小,也可以是在服务端返回前就全部置为该用户已读.(这种对文章还可以,一页10篇曝光很快,但是对视频不合适).
另外,推荐服务进行过滤返回的时候可以使用布隆过滤器算法,有很多开源的实现,redis也支持,可以在很好的时间和空间复杂度下完成过滤操作.
希望帮到你.

百度 布隆过滤器 大访问量网站ip统计

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题