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

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

时间:2023-04-19 20:56:14浏览次数:46  
标签:name err redis DB gorm go 连接

 文件: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
}

 

 

完结

标签:name,err,redis,DB,gorm,go,连接
From: https://www.cnblogs.com/ypeih/p/17334578.html

相关文章

  • ARC159F Good Division【性质,DP,线段树】
    定义一个序列是好的当且仅当其可以通过每次删去一对相邻的不同的数把序列删空。给定一个长度为\(2n\)的序列\(a\),求有多少种划分方式使得每一段都是好的。答案对\(998244353\)取模。\(n\leq5\times10^5\),时限\(\text{5.0s}\)。先考虑什么样的数列是合法的,显然必要条......
  • 【Redis】面试题 GEO地理位置信息
    目录面试1http协议详情,http协议版本,http一些请求头2GET请求和POST请求的区别3如何实现服务器给客户端发送消息,websocket是什么?4悲观锁和乐观锁,如何实现今日内容1GEO地理位置信息面试1http协议详情,http协议版本,http一些请求头 -特点: 1基于请求响应--》服务端不能主......
  • redis----day03( )
    面试面试如何聊#第一面(笔试): -办公室做题:拍照,发群里---》自己课搜,同学帮着搜----》往上写-问不答了,可以直接面试吗?#第二面:正式面试(开启手机录音,放口袋中) -一个人,多个人坐你对面-最重要的:自我介绍(自己提前写出来,500字,尽可能展现自己的优势) -面试官您......
  • 程序员必备上传服务器Xftp及连接服务器工具Xshell
    1.下面截图为破解工具,点击执行就可以用了 ......
  • centos9 redis安装报错(实在无解使用方法)
    报错如下[root@centosbin]#./redis-server./redis-server:errorwhileloadingsharedlibraries:libssl.so.1.1:cannotopensharedobjectfile:Nosuchfileordirectory使用的解决命令yummakecacheyum-yinstall*openssl*原过程root@centosbin]#lsredi......
  • 【中介者设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
    简介中介者模式(MediatorPattern)是一种行为型模式。它限制对象之间的直接交互,它用一个中介对象来封装一系列的动作,以让对象之间进行交流。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。当一些对象和其他对象紧密耦合以致难以对其进......
  • 900万大数据量 查询 更新 使用redis 多线程请求
    表A中有900多万数据,根据900万数据,查询数据并插入B表创建一个定时任务,定时查询配置条件,查询更新(查询更新使用多线程)预估时间,设置请求时间跟频率不想这么干:可以查看数据执行进度思路:设置一个运行队列runList里面是待执行的id设置一个失败队列failList里面是执行失败的i......
  • Docker 运行 mongodb 无法连接 mongosh 问题
    场景在宿主机上依次执行以下命令,拉取mongo镜像,创建容器并运行dockerpullmongodockerrun--rm-d\--namemongo-test\mongo\bash进入容器中:dockerexec-itmongo-testbash执行使用mongosh连接mongo数据库的命令:mongosh报错:MongoNetworkError:......
  • google pay 配置sub/pub回调
        来源:https://blog.csdn.net/wujiesunlirong/article/details/122173321......
  • Redis Pipeline(管道)
    RedisPipeline简介Redis是一种基于客户端-服务端模型以及请求/响应的TCP服务。一次Redis客户端发起的请求,经过服务端的响应后,大致会经历如下的步骤:客户端发起一个(查询/插入)请求,并监听socket返回,通常情况都是阻塞模式等待Redis服务器的响应服务端处理命令,并且返回处理结果......