【问题标题】:How can I buffer the twitter stream with redis before inserting into rethinkdb?在插入 rethinkdb 之前,如何使用 redis 缓冲 twitter 流?
【发布时间】:2016-10-14 14:41:17
【问题描述】:

我在哪里

我有一个简单的 node.js twitter 流消费者,可以跟踪各种主题标签。通常,这些是趋势标签,这意味着大量 twitter json 正在流入我的消费者。我不对消费者中的 twitter json 进行任何处理。

我想要什么

我想将推文 json 对象存储在 rethinkdb 中。

假设

由于推文的数量(以及所述数量的不可预测性),我应该避免在消费时将推文 json 对象插入到 rethinkdb 中(因为推文进入消费者的速度可能比进入消费者的速度更快rethinkdb 可以写那些推文)。

由于 Redis 绝对足够快,可以在使用推文 json 对象时处理它们的写入,因此我可以将推文 json 对象直接推送到 redis,并让另一个进程将这些推文拉出并将它们插入 rethinkdb。

我希望学到什么

  1. 我的假设是否正确?
  2. 这种架构有意义吗?如果没有,你能推荐一个更好的选择吗?

  3. 如果我的假设是正确的并且这个架构是有意义的,

    一个。 使用 redis 作为推文缓冲区的最佳方式是什么?

    b. 从 redis 缓冲区读取(和更新/清除)以执行对 rethinkdb 的插入的最佳方法是什么?

【问题讨论】:

    标签: node.js twitter redis buffer rethinkdb


    【解决方案1】:

    我们确实在生产中使用了这种架构。如果你要处理的数据量没有超过 redis 的最大内存限制,你可以这样继续。而且您还需要注意停机时间。

    使用 redis 作为推文缓冲区的最佳方法是什么?

    您可以使用 redis 队列。你的制片人一直在努力。 您的消费者从尾部消费并填充到您的数据库中。

    http://redis.io/commands#list

    您可以使用此解决方案Redis Pop list item By numbers of items,因为您有类似的要求(生产者很重,消费者需要消耗比一个一个弹出更快)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-18
      • 1970-01-01
      • 2016-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-12
      • 2015-11-06
      相关资源
      最近更新 更多