go的mongodb库mgo如何使用连接池?
我看到别人一般都是直接dial的,不知道里面具体发生了什么。
`
package models
import (
"gopkg.in/mgo.v2"
)
var (
DB string
PublicSalt string
)
func GetSessionAndDB() (mgo.Session, mgo.Database) {
session, err := mgo.Dial(DB) // 这里是不是会每次都是一个新连接?还是连接池里面拿了一条出来。
if err != nil {
panic(err)
}
session.SetMode(mgo.Monotonic, true)
return session, session.DB("gopher")
}
package b
sess , db := models.GetSessionAndDb() //
`
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
可以看下这个源码 http://bazaar.launchpad.net/+...:/session.go#L195
Dial 方法调用 DialWithTimeout 方法,然后又调用 DialWithInfo 方法,所以是有连接池的。 只是Dita方法为你做了方便方便的wrapper。
然后用 session.New() 或者 session.Copy() 获取一个Diat返回的链接