go的mongodb库mgo如何使用连接池?

发布于 2022-09-06 07:59:51 字数 564 浏览 12 评论 0

我看到别人一般都是直接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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

月下伊人醉 2022-09-13 07:59:51

可以看下这个源码 http://bazaar.launchpad.net/+...:/session.go#L195

Dial 方法调用 DialWithTimeout 方法,然后又调用 DialWithInfo 方法,所以是有连接池的。 只是Dita方法为你做了方便方便的wrapper。

然后用 session.New() 或者 session.Copy() 获取一个Diat返回的链接

趁微风不噪 2022-09-13 07:59:51
func test(){
    s := session.Copy()
    defer s.Close()
    //使用s
    ........
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文