go 的 Pool池对象 sync.Pool 创建mysql连接池

 Golang  2023-04-13  admin  307  414

// 在这个例子中,我们创建了一个 sync.Pool,其中包含一个 New 函数,该函数创建一个 MySQL 连接
// 在 someFunction 中,我们使用 dbPool.Get() 从池中获取一个 MySQL 连接
// 然后我们使用连接进行一些操作,最后使用 dbPool.Put() 将连接放回池中
// 我们可以通过设置 dbPool 的大小来初始化连接池中的连接数量
// 例如,如果我们想要初始化 10 个连接,我们可以将 dbPool 的大小设置为 10

var dbPool = sync.Pool{
    New: func() interface{} {
        db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/database")
        if err != nil {
            log.Fatal(err)
        }
        return db
    },
}

func init() {
    // 初始化连接池中的连接数量为 10
    for i := 0; i < 10; i++ {
        dbPool.Put(dbPool.New())
    }
}

func someFunction() {
    // 从池中获取一个 MySQL 连接
    db := dbPool.Get().(*sql.DB)

    // 使用连接进行一些操作
    // ...

    // 将连接放回池中
    dbPool.Put(db)
}

// 在这个例子中,我们创建了一个 sync.Pool,其中包含一个 New 函数,该函数创建一个 MySQL 连接
// 我们使用 init 函数来初始化连接池中的连接数量为 10
// 在 someFunction 中,我们使用 dbPool.Get() 从池中获取一个 MySQL 连接
// 然后我们使用连接进行一些操作,最后使用 dbPool.Put() 将连接放回池中


如果文章对您有帮助,点击下方的广告,支持一下作者吧!

相关推荐


go 的 Pool池对象-sync.Pool

packagemain import( &quot;fmt&quot; &quot;strconv&quot; &quot;sync&quot; ) //在go中,原生的池化数据结构为sync.Pool,有三个方法: //New字段为一个方法,定义为func()interface{},在新建Pool时,定义好New字段,以供后续从池中获取对象时,如果当前池中无对象,则使

go 协程管理及传参处理

Go语言中的goroutine虽然相对于系统线程来说比较轻量级(初始栈大小仅2KB),(并且支持动态扩容),而正常采用java,c++等语言启用的线程一般都是内核态的占用的内存资源一般在4m左右,而假设我们的服务器CPU内存为4G,那么很明显才用的内核态线程的并发总数量也就是1024个,相反查看一下Go语言的协程则可以达到4*1024*1024/2=200w.这么一看就明白了为什么Go语言天生支持

Medoo 轻量级PHP数据库加速开发框架

Medoo 轻量级PHP数据库加速开发框架

字符串助手函数

字符串助手函数classStr { /** *检查字符串中是否包含某些字符串 *@paramstring$haystack *@paramstring|array$needles *@returnbool */ publicstaticfunctioncontains($haystack,$needles) { foreach((array)$needlesas$needl