您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

gopkg.in/mgo.v2中的并发(Mongo,Go)

gopkg.in/mgo.v2中的并发(Mongo,Go)

mgo.Session是同时使用安全。引用其文档:

所有Session方法都是并发安全的,可以从多个goroutine中调用

但这并不意味着您不应该通过在拨号时获得的初始会话上调用Session.Copy()或来并行创建和使用更多它们Session.Clone()

并发安全并从中使用更多好处不会 彼此排斥 (它们不是 互斥的 )。虽然你可以使用一个单一mgo.Session的够程的任意数,不会很好地扩展,将无法形成规模 ,在所有 。会话会自动管理一个连接池,甚至可能管理到多个服务器节点的连接,但是如果您使用的是单个Session,则不会利用这一点。通过Session在每个请求的开始处创建一个新请求(如果需要),并在结束时适当关闭它(使用Session.Close();最好使用来调用defer),您正在利用可能同时使用多个连接(可能与多个服务器节点(如果有)的连接)的优势,从而更好地利用服务器资源;并获得更快的响应时间(从数据库,最终到HTTP最终用户)。调用Session.Close()不会关闭与服务器的基础连接,它只会将连接放回池中,以供其他会话使用。

mongodb 2022/1/1 18:15:58 有544人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶