我需要一些帮助来弄清楚什么是最佳实践,如果你需要在使用node,redis和MySQL/MongoDB时为每个请求插入大量数据。
如何设置一个队列来处理每个请求,如下所示:
- 用户在我的应用程序中请求一个URL,即/route/insert-data
- 服务器处理请求,将其添加到Redis队列,并将状态200发送回用户
- 应用程序以某种间隔检查redis队列中是否有任何内容,如果有,它将选择最旧的一个,将其插入数据库,然后从redis中删除该键
最好的办法是什么?我目前有一个快速的应用程序设置。
谢谢!
1条答案
按热度按时间jdzmm42g1#
我也在寻找类似的解决方案,但如果有人在寻找。伪代码将是:
1.找到最接近(向上舍入)时间戳秒到你的间隔(说每5秒)
1.用那个时间戳作为redis的密钥
1.使用redis append将值附加到该键
1.使用getdel(获取,然后删除,以提高性能)周期性地检查(每秒)最后一个可分割的redis键。
这可能会更有性能,但它只是为了让你理解最简单的流程(redis将是redis客户端,假设你使用的是库:https://github.com/redis/node-redis)
您可以通过一种简单的方法定期检查密钥,例如
需要注意的是,您需要添加更多的代码,以确保在数据库失败的情况下,您可以捕获它,重试它,追加到下一个,转储它或以其他方式。