大家好,我是你的好朋友思创斯。今天说一说golang 封装 mysql 和 redis 连接「建议收藏」,希望您对编程的造诣更进一步.

golang 封装 mysql 和 redis 连接

Mysql封装

package db

import (
	"fmt"
	_ "github.com/go-sql-driver/mysql"
	"github.com/jmoiron/sqlx"
)


var DB *sqlx.DB


func init(){

	database, err := sqlx.Open("mysql", "root:root@tcp(127.0.0.1:3306)/test")
	if err != nil {
		fmt.Println("open mysql failed,", err)
		return
	}
	DB = database

}

Redis 池连接封装

package db

import (
	"github.com/garyburd/redigo/redis"
)

var RedistPool *redis.Pool  //创建redis连接池


func init(){
	RedistPool = &redis.Pool{     //实例化一个连接池
		MaxIdle:16,    //最初的连接数量
		MaxActive:0,    //连接池最大连接数量,不确定可以用0(0表示自动定义),按需分配
		IdleTimeout:300,    //连接关闭时间 300秒 (300秒不使用自动关闭)
		Dial: func() (redis.Conn ,error){     //要连接的redis数据库
			c,error := redis.Dial("tcp","localhost:6379")
			c.Do("AUTH","mifengai")
			return c,error
		},
	}

}

 

使用:

import (
	"fmt"
	"thor/app/db"
)

func main(){

	pool := db.RedistPool.Get()
	_,setError := pool.Do("Set","name","redisdb")
	if setError!=nil{
		fmt.Println("出现了错误:",setError)
		return
	}


	ur, err := db.DB.Exec("INSERT INTO `userinfo` (`username`,`password`) VALUES (?,?)", "admin", "admin@admin.com")
	if err != nil {
		return
	}


}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。