Javascript 从节点或每个请求的连接到memcached/mongo的单个全局连接更好吗?

Javascript 从节点或每个请求的连接到memcached/mongo的单个全局连接更好吗?,javascript,node.js,mongodb,memcached,database,Javascript,Node.js,Mongodb,Memcached,Database,我正在(重新)编写一个从php到node的api,它具有极高的使用率;它使用memcached,当前连接到memcached,完成其业务,并在每次运行php文件时关闭,即每次访问api页面时关闭 现在使用node,我们正在构建http服务器本身;我可以定义一个全局memcached连接并使用它: var mclient = new memcache.Client(server, port); // This would only run after mclient has connected

我正在(重新)编写一个从php到node的api,它具有极高的使用率;它使用memcached,当前连接到memcached,完成其业务,并在每次运行php文件时关闭,即每次访问api页面时关闭

现在使用node,我们正在构建http服务器本身;我可以定义一个全局memcached连接并使用它:

var mclient = new memcache.Client(server, port);

// This would only run after mclient has connected 
http.createServer(function (req,res){
    // stuff involving mclient
}).listen(8888);

或者我可以把它放在
createServer
回调中。同样的问题也适用于mongodb连接。我应该做什么?

一个连接更好,因为您不需要在每次向db发出请求时都通过授权和初始化。您希望快速访问的几乎所有内容都应该存储在RAM中,不仅是db连接,还应该存储常规模板或您经常使用的其他文件、配置或某些队列。

一个连接更好,因为您不需要在每次向db发出请求时都传递授权和初始化。您希望快速访问的几乎所有内容都应该存储在RAM中,不仅是db连接,还应该存储常规模板或您经常使用的其他文件、配置或一些队列。

我建议使用一个包含多个连接的池。这将允许一次执行多个飞行中操作,同时节省创建新连接时出现的TCP握手/速率限制和应用程序级握手(如登录)的开销

我不知道memcached,但我认为MongoDB的节点本机驱动程序(https://github.com/christkv/node-mongodb-native)正在处理内置连接池,因此您不必自己实现。文档中有一条注释说它很快就会出现,但看起来代码已经存在,所以应该很快就会出现


更新:我刚刚与驱动程序的作者进行了检查,连接池已经完全实现,他只是忘记了从文档中删除该行。

我建议使用多个连接池。这将允许一次执行多个飞行中操作,同时节省创建新连接时出现的TCP握手/速率限制和应用程序级握手(如登录)的开销

我不知道memcached,但我认为MongoDB的节点本机驱动程序(https://github.com/christkv/node-mongodb-native)正在处理内置连接池,因此您不必自己实现。文档中有一条注释说它很快就会出现,但看起来代码已经存在,所以应该很快就会出现

更新:我刚刚和驱动程序的作者核实了一下,连接池已经完全实现了,他只是忘了从文档中删除这一行