假设我们正在复制 Twitter 的关注功能。据我所知,现在每个人都同意使用 Redis 进行以下设计。
joe 后面的所有推文都存储在排序集“ss:joe”中,key=tweet_id, score=tweet_timestamp
所以当 joe 关注ladygaga 时,ladygaga 的推文会添加到“ss:joe”中,到目前为止一切顺利。
问题是:当 joe 取消关注ladygaga 时,如何从“ss:joe”中删除ladygaga 的推文?
遍历每一条“ss:joe”推文并删除那些属于ladygaga的推文已经过时了。
我能想到的最好的方法是为每个存储她自己的推文的用户维护另一个排序集,所以ladygaga 将拥有她的排序集“tweets:ladygaga”,key=tweet_id, score=tweet_timestamp,然后我们可以通过 ZINTERSTORE 挑选出ladygaga 的推文“ss:joe”和“tweets:ladygaga”。
有更好的解决方案吗?