保持Redis活动流缓存与原始数据源同步

时间:2014-01-14 16:09:20

标签: redis activity-streams

我的网络应用中有一个活动流,它使用的设置几乎与此处描述的相同:How to implement the activity stream in a social network

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

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

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

  1. 每次删除某些内容时,循环遍历所有用户列表和列表项以查找对它的引用,如果存在,则将其删除。 (这可能不太现实)
  2. 从列表中构建蒸汽时,请检查该项目是否存在,以及是否确保从列表中删除该项目。
  3. 很多人建议将Redis用于以类似方式构建的活动流,但我还没有看到使列表与原始数据源保持同步的问题。

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

1 个答案:

答案 0 :(得分:1)

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

1。)扇出删除并从每个Feed中删除它们,并且:

2。)在执行读取时添加过滤层

如果人们提交了不当内容,您拥有高级隐私设置,或者出于其他原因想要快速删除数据,则第二步非常有用。