随心的博客

好记性不如个烂笔头,随心记录!

返回顶部

go项目中数据库连接,以及redis连接

 文件:common/mysql.go 数据库连接文件

package common
import (
    "gorm.io/driver/mysql"
    "gorm.io/gorm"
    "gorm.io/gorm/schema"
    "log"
)
var DB *gorm.DB //全局定义DB
var dbErr error  //定义数据库错误

func init() {
    dsn := "root:root123456@tcp(127.0.0.1:3306)/godemo?charset=utf8"

    DB, dbErr = gorm.Open(mysql.Open(dsn),&gorm.Config{
        //全局配置
        NamingStrategy: schema.NamingStrategy{
            SingularTable: true,    //表名不增加复数
        },
    })
    sqlDb,_ := DB.DB()

    //设置连接超时
    sqlDb.SetConnMaxLifetime(3000) //设置最大生存时间,3000秒,比数据库的3600要小

    sqlDb.SetMaxIdleConns(30) //设置最大空闲连接
    sqlDb.SetMaxOpenConns(1000) //设置最大连接数

    if dbErr != nil {
        log.Fatal(dbErr.Error())
    }
}

 

注意:

一定要设置 最大生存时间,这个生存时间要比mysql里面的max_life_time 要小。不然管理后台会经常性的自动退出。

 

文件:common/myredis.go 连接redis

package common

import (
    "github.com/gomodule/redigo/redis"
    "log"
)
var Redi redis.Conn
var err error
func init()  {
    
setdb := redis.DialDatabase(0)
    setPasswd := redis.DialPassword("11223355") //redis密码
    //连接redis
    Redi, err = redis.Dial("tcp", "redis:6379",setdb,setPasswd)
    if err != nil {
        log.Fatal(err)
    }
}
//设置值
func SetRedisVal(name string,value string,expire int) bool {
    Redi.Do("set",name,value)
    Redi.Do("expire",name,expire)
    return true
}
//获取值
func GetRedisVal(name string) string  {

    res,err := Redi.Do("get",name)
    if err != nil || res == nil {
        return ""
    }
    val,err := redis.String(res,err)
    if err != nil {
        return ""
    }
    return val
}

 

 

完结

posted @ 2023-04-19 20:46  yangphp  阅读(52)  评论(0编辑  收藏  举报