如何在Node.js应用程序中将数据从Redis持久保存到MySQL

时间:2019-06-03 09:34:13

标签: mysql node.js redis

正在为应用开发新的原型,该原型应能够在短时间内(例如20-30分钟)每分钟处理20.000个以上的传入请求,并将实时结果返回给用户。

示例:我显示一个是/否问题,您应该可以对我们的API进行“是/否”投票,并且我们的API应该对其进行处理,并实时反馈有多少人投了赞成票,有多少人投了赞成票投票否。

所有这些请求都需要保存到我们的MySQL数据库中。

我认为直接将那些20K请求实时保存到数据库中不是一个明智的主意,因为这会给数据库造成巨大的负担,尤其是考虑到我们需要实时数据。

所以我的想法是将Redis用作中间层。 API写入Redis,Redis返回实时计数。

但是我仍然需要能够保留数据。有可用资源时,是否可以告诉Redis将所有行写入MySQL?

还是您会建议一种完全不同的方法?

我也研究过RabbitMQ,将所有插入队列并在可能的情况下对其进行处理,但据我所知这无法返回实时数据

我还没有代码,因为我首先在考虑实现此代码所需的工具。

1 个答案:

答案 0 :(得分:0)

您可以同时使用

1。添加Redis作为带有持久性选项的中间层。

Redis提供了不同范围的持久性选项。 如果您根本不使用持久性选项。 Redis服务器重新启动时,所有数据都会丢失。

您可以将Redis配置为在各种事件下保存数据

  • 不定期自动
  • 手动调用BGSAVE命令时

  • Redis关闭时

详细了解Redis Persistence here

  1. 您也可以将RedisRabbitMQ一起使用。

Redis向用户显示实时结果。

RabbitMQ将数据添加到队列中并将数据保存到任何数据库。

RabbitMQ可以在高峰时段处理负载。因此,所有保存调用都将在队列中。