1

我的网络应用程序中有一个活动流,它使用的设置与此处描述的设置几乎相同:如何在社交网络中实现活动流

简而言之:数据结构目前仅包含一个长的非规范化 MySQL 表。

上面的帖子还建议使用 Redis 作为每个用户最近 100 个左右活动的缓存的可能性。我已经开始开发这种方式,每个用户都有一个名为“uid:123:activities”之类的 Redis 列表,每个列表项都是保存为字符串的 json 编码 PHP 数组。JSON 包含诸如“user_id”、“time”、“photo_id”等信息。

但是,我似乎面临一个问题。当从应用程序中删除该活动的参与者之一时,如何从 Redis 的用户列表中删除该活动?例如,如果您关注的人删除了他们的帐户,则需要从您的信息流中删除任何涉及他们的活动。我看到了两种可能的方法,但都不是很好:

  1. 每次删除某些内容时,循环遍历所有用户列表和列表项以查找对其的引用,如果存在,则将其删除。(这可能不太现实)
  2. 从列表中构建蒸汽时,请检查该项目是否存在以及是否确保从列表中删除该项目。

很多人建议将 Redis 用于以类似方式构建的活动流,但我还没有看到保持列表与原始数据源同步的问题。

在我走选项 2 的路线之前,有没有人有任何其他建议?

4

1 回答 1

1

我是 Stream-Framework 和 getstream.io 的作者之一,最常见的方法是:

1.)扇出从每个提要中删除并删除它们,并且:

2.) 在读取时添加过滤层

如果有人提交了不适当的内容,您有高级隐私设置,或者出于某些其他原因您想快速删除数据,这第二步很有用。

于 2014-11-18T17:33:25.347 回答