关于nodejs下redis/mysql需不需要连接池的问题

高手在线求帮请问一下,关于nodejs下redis/mysql需不需要连接池的问题
最新回答
贴心小棉袄

2024-04-15 12:27:09

  mysql会为每个连接创建一个单独的线程来查询。不同于redis数据基本都在内存中,因为mysql会有大量的读取磁盘的IO操作,所以多个线程一起工作会比一个个查询要快。
  
  但是nodejs又是单线程的,它能不能同时发送多个请求到mysql服务器上呢?
  这里要理解nodejs的运作,虽然nodejs是一个主线程,但是它调用的IO指令等是通过另外的线程去做的,IO指令完成后就给主线程一个小任务片,也就是回调函数了。
  这里有个很关键的点就是,nodejs主线程一个,但是IO线程会有多个。
  因此如果用nodejs + mysql只用单个连接的话那么就利用不到mysql能同时服务多个查询的优势了。应该使用类似下图的运作方式,nodejs 使用多个连接来连接mysql。多连接是需要连接池的,有连接池就避免了每次连接都要去创建销毁的消耗了。