我正在(重新)编写一个从 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 连接。我应该怎么做?
最佳答案
我建议使用一个包含多个连接的池。这将允许一次进行多个正在进行的操作,同时节省您创建新连接时出现的 TCP 握手/速率限制和应用程序级握手(例如登录)的开销。
我不知道 memcached,但我认为 MongoDB 的 node-native-driver (https://github.com/christkv/node-mongodb-native) 正在使用内置连接池,所以你不需要必须自己实现。文档中有一条注释说它即将推出,但看起来代码已经存在,所以应该很快。
更新:我刚刚与驱动程序的作者核实过,连接池已完全实现,他只是忘记从文档中删除该行。
关于javascript - 更好地从 Node 或每个请求的连接到 memcached/mongo 的单一全局连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7203723/