【Redis实战|黑马点评】达人探店、点赞、关注、Feed流推送、分页查询

824 阅读3分钟

发布探店笔记

探店笔记类似点评网站的评价,往往是图文结合。对应的两个表:

  • tb_blog:探店笔记表,包含笔记中的标题、文字、图片等
  • tb_blog_comments:其他用户对探店笔记的评价

实现查看发布探店笔记的接口:

需求:点击首页的探店笔记,会进入详情页面,实现该页面的查询接口。

点赞

完善点赞功能:

  • 同一个用户只能点赞一次,再次点击则取消点赞
  • 如果当前用户已经点赞,则点赞按钮高亮显示(前端已实现,判断字段Blog类的isLike属性)

实现步骤:

  • 给Blog类中添加一个isLike字段,标识是否被当前用户点赞
  • 修改点赞功能,利用Redis的set集合判断是否点赞过,未点赞过则点赞数+1,已点赞过则点赞数-1
  • 修改根据id查询Blog的业务,判断当前登录用户是否点赞过,赋值给isLike字段
  • 修改分页查询Blog业务,判断当前登录用户是否点赞过,赋值给isLike字段

点赞排行榜

在探店笔记的详情页面,应该把给该笔记点赞的人显示出来,比如最早点赞的Top5,形成点赞排行榜。

实现查询点赞排行榜的接口 -> 按照点赞时间先后排序,返回Top5的用户

截屏2023-05-02 16.33.37.png

关注和取关

在探店图文的详情页面中,可以关注发布笔记的作者。

实现关注和取关功能

基于该表数据结构,实现两个接口:

  • 关注和取关接口
  • 判断是否关注的接口

关注是User之间的关系,是博主与粉丝的关系,数据库中有一张tb_follow表来表示。

共同关注

点击博主头像,可以进去博主首页。

实现共同关注功能:

利用Redis中恰当的数据结构(set),实现共同关注功能。在博主个人页面展示出当前用户与博主的共同好友。

关注推送

关注推送也叫做Feed流,直译为投喂。为用户持续的提供“沉浸式”的体验,通过无限下拉刷新获取新的信息。

截屏2023-05-02 18.58.37.png

Feed流的模式

Feed流产品有两种常见模式:

  • Timeline:不做内容筛选,简单的按照内容发布时间排序,常用于好友或关注。例如朋友圈。
    • 优点:信息全面,不会有缺失,实现相对简单。
    • 缺点:信息噪声较多,用户不一定感兴趣,内容获取效率低。
  • 智能排序:利用智能算法屏蔽掉违规的、用户不感兴趣的内容,推送用户感兴趣的信息来吸引用户。
    • 优点:投喂用户感兴趣信息,用户粘度很高,容易沉迷。
    • 缺点:如果算法不精准,可能起到反作用。

Feed流的实现方案1

拉模式:也叫做读扩散。

截屏2023-05-02 20.03.14.png

Feed流的实现方案2

推模式:也叫做写扩散。

截屏2023-05-02 20.10.25.png

Feed流的实现方案3

推拉结合模式:也叫做读写混合,兼具推和拉两种模式的优点。

截屏2023-05-02 20.15.00.png

总结

截屏2023-05-02 20.15.51.png

基于推模式实现关注推送功能

  • 修改新增探店笔记的业务,在保存blog到数据库的同时,推送到粉丝的收件箱
  • 收件箱满足可以根据时间戳排序,必须用Redis的数据结构实现
  • 查询收件箱数据时,可以实现分页查询

Feed流的分页问题

Feed流中的数据会不断更新,所以数据的角标也在变化,因此不能采用传统的分页模式。

实现关注推送页面的分页查询

在个人主页的“关注”卡片中,查询并展示推送的Blog信息。

截屏2023-05-02 20.50.43.png