2

我将在 redis 上写一个简单的新闻网站,并支持追随者。我无法想象如何像在 Twitter 中那样组织用户时间线。我读过 Retwis ( http://redis.io/topics/twitter-clone ),但它的提要创建方法似乎很愚蠢。如果我想删除条目怎么办?我应该从关注者提要中删除所有条目引用。如果我已经不关注某些用户怎么办?

4

1 回答 1

2

有几种方法可以利用一点想象力来攻击您所描述的内容,以下是一些解决您问题的示例:

如果我想删除条目怎么办?

可以为每个帖子维护一个集合,包含post:$postid:users所有可能在其提要中包含该帖子的用户ID;当要删除帖子时,只需从该集合中提取所有成员并遍历 id 以将其从每个uid:$userid:posts集合中删除;说到哪个,您必须将最后一个变成一个集合,而不是像原始文章建议的那样是一个列表,以便能够提取和删除单个项目,但这很简单,逻辑非常相似。

如果我已经不关注某些用户怎么办?

当为每个单独的用户生成提要时,您必须迭代并读取每个post:$postid密钥,您可以从中访问作者用户 ID;因此,在显示帖子之前,您阅读此 ID 并在集合中查找它uid:$userid:following,如果它在那里,我们会显示该帖子,如果不是,我们将其删除uid:$userid:posts并且不显示它。

简而言之,为了在 redis 中构建这种逻辑,您必须牢记以下几点:

  • 你需要很多命令,但没关系,Redis 应该足够快来处理它。
  • 数据会重复,但这也没关系;如果每个用户已经有一组用户的帖子,那么对于具有关系 DBMS 背景的人来说,为每个帖子存储一组用户可能看起来很疯狂,但这是在像 redis 这样的非关系数据存储中建立关系的唯一方法。
  • 一般来说,在 Redis 中设计关系时会考虑集合和排序集合。

使用 redis,你可以自己做所有事情,但是一旦你了解它,它实际上是非常强大的。

于 2012-09-10T21:26:39.750 回答