如何复用golang中的连接池

go语言内置的 database/sql 标准库本就是连接池的设计。

我们只需要下载对应数据的驱动,这里以mysql为例:

go get -u github.com/go-sql-driver/mysql

然后按以下方式先定义全局的mysql连接对象db,然后后续所有的数据库操作都使用db就可以了,这就是官方实现的连接池方式。

// 定义一个全局对象db

var db *sql.DB

// 定义一个初始化数据库的函数

func initDB() (err error) {

// DSN:Data Source Name

dsn := "user:password@tcp(127.0.0.1:3306)/test"

// 不会校验账号密码是否正确

// 注意!!!这里不要使用:=,我们是给全局变量赋值,然后在main函数中使用全局变量db

db, err = sql.Open("mysql", dsn)

if err != nil {

return err

}

// 尝试与数据库建立连接(校验dsn是否正确)

err = db.Ping()

if err != nil {

return err

}

return nil

}

func main() {

err := initDB() // 调用输出化数据库的函数

if err != nil {

fmt.Printf("init db failed,err:%v\n", err)

return

}

}

其中sql.DB是一个数据库(操作)句柄,代表一个具有零到多个底层连接的连接池。它可以安全的被多个go程同时使用。database/sql包会自动创建和释放连接;它也会维护一个闲置连接的连接池。

我们还可以通过以下方法设置数据库的最大连接数:

func (db *DB) SetMaxOpenConns(n int)

通过以下方法设置数据库的最大空闲连接数:

func (db *DB) SetMaxIdleConns(n int)
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值