在插入 rethinkdb 之前,如何使用 redis 缓冲 twitter 流?

How can I buffer the twitter stream with redis before inserting into rethinkdb?

我在哪里

我有一个简单的 node.js 推特流消费者,它跟踪各种主题标签。通常,这些都是热门话题标签,这意味着大量推特 json 正在流入我的消费者。我不对消费者中的推特 json 进行任何处理。

我想要的

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

假设

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

由于 Redis 绝对足够快来处理 tweet json 对象的写入,因为它们被消耗,我可以将 tweet json 对象直接推送到 redis,并让另一个进程拉取这些 tweets取出并将它们插入 rethinkdb。

我希望学到什么

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

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

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

    b。 从(和updating/clearing)redis 缓冲区读取以执行插入到rethinkdb 中的最佳方法是什么?

我们在生产中确实使用了这种架构。如果您要处理的数据量不超过 redis 的最大内存限制,您可以按照这种方式进行。而且您还需要注意停机时间。

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

你可以使用redis队列。你的制作人不断地向头脑推进。 你的消费者从尾部消费并填充到你的数据库。

http://redis.io/commands#list

你可以使用这个解决方案因为你有类似的需求(生产者很重,消费者需要比一个一个弹出更快地消费)