手头上有一个项目涉及到这样的需求:
有这样一个列表页面,里面显示的是我所关注的其他用户的所有文章,排序按他们的发表时间排序,想到这个需求和微博app首页的已关注用户微博列表几乎一样,想用redis去设计并实现,却怎么都想不到一个合理的解决方案.
我目前的存储结构是这样的:
用户是拥有一个储存着自己关注的所有用户的zset,而发表文章的用户每个人也都有一个存放自己所发表的文章id(aid)的zset,根据里面存放的文章id可以获取到储存文章内容的hash key(article:aid),这样的方式目前来说,取任何独立用户的文章列表都是没有问题的.
但是我想取到所关注的所有用户的文章列表,并且按他们不同的发表时间做出合理的排序,想了一些实现方式都不是很好.
所以想请教一下大家.
微博的基础设计里,设置了两种逻辑用于处理
所有关注人的微博列表
。其一是
推(Push)
:当用户发布微博等情况时,将这条微博推入所有关注他的人的所有关注人的微博列表
。其二是
拉(Pull)
:当用户更新自己关注的人等情况时,从这些人中拉取微博组成所有关注人的微博列表
。这两个逻辑在Redis中都是可以实现的,你可以自己探索探索。