Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在插入数据库之前,如何使用redis缓冲twitter流? 我在哪里_Node.js_Twitter_Redis_Buffer_Rethinkdb - Fatal编程技术网

Node.js 在插入数据库之前,如何使用redis缓冲twitter流? 我在哪里

Node.js 在插入数据库之前,如何使用redis缓冲twitter流? 我在哪里,node.js,twitter,redis,buffer,rethinkdb,Node.js,Twitter,Redis,Buffer,Rethinkdb,我有一个简单的node.js twitter流消费者,它跟踪各种hashtag。通常,这些都是趋势标签,这意味着大量的twitter json正在流入我的消费者。我不会在消费者中对twitter json进行任何处理 我想要什么 我想将tweet json对象存储在数据库中 假设 由于tweet的数量(以及所述数量的不可预测性),我应该避免在消费时将tweet json对象插入RejectDB(因为tweet进入消费者的速度可能比RejectDB写入这些tweet的速度快) 由于Redis绝对足

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

我想要什么 我想将tweet json对象存储在数据库中

假设 由于tweet的数量(以及所述数量的不可预测性),我应该避免在消费时将tweet json对象插入RejectDB(因为tweet进入消费者的速度可能比RejectDB写入这些tweet的速度快)

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

我希望学到什么
  • 我的假设正确吗
  • 这种架构有意义吗?如果没有,你能建议一个更好的选择吗

  • 如果我的假设是正确的,并且这种架构是合理的

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

    b从redis缓冲区读取(以及更新/清除)数据以执行REJECTDB插入的最佳方式是什么?


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

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

    您可以使用redis队列。你的制作人不断地往脑袋里推。 您的消费者从尾部消费并填充到您的db

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