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