我正在(重新)从php编写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连接。我该怎么办?
答案 0 :(得分:2)
一个连接更好,因为每次向db发出请求时都不需要传递授权和初始化。几乎所有想要快速访问的内容都应该存储在RAM中,不仅是数据库连接,还包括常用模板或您经常使用的其他文件,配置或某些队列。
答案 1 :(得分:2)
我建议使用多个连接池。这将允许同时进行多个正在进行的操作,同时节省您在创建新连接时出现的TCP握手/速率限制和应用程序级握手(例如登录)的开销。
我不知道memcached,但我认为MongoDB的节点本机驱动程序(https://github.com/christkv/node-mongodb-native)正在开发内置连接池,所以你不要不必自己实现这个。文档中有一条说明即将推出,但看起来代码已经存在,所以它应该很快就会出现。
更新:我刚刚与驱动程序的作者核实并且连接池已完全实现,他只是忘了从文档中删除该行。