背景:在首页推送内容时,需要根据不同用户推送不同的内容,规则为用户A浏览过用户B的文章详情则代表关注了,以后会推送用户B的文章给A。这样会有一个问题,新用户推送内容为0,但需求就是这样子。只能照做!
一、数据结构
- 首先这样的关系我考虑用redis的list和set来解决。
- set作为被关注表,一旦用户A关注了用户B。则在用户B的被关注表中加上用户A的id。
- list作为文章推送表,当用户B发表文章时,在被关注表中获取到关注B的用户的id,根据id找到每位用户的list文章表,在每个list中使用LPUSH(先进后出)插入文章id。用LPUSH也是为了方便分页。
- 当用户A获取首页数据时,在A的list中获取0-9条数据,数据内容是文章的id。
二、数据安全 - 用户的被关注表需要存入mysql中,防止数据丢失。虽然redis有持久化方法,但还是安全起见。