-
安装gorm相关依赖
bashgo get -u gorm.io/gorm go get -u gorm.io/driver/mysql -
编写配置文件

-
编写model加载配置

- 在main中加载配置文件
go
var configFile = flag.String("f", "etc/auth.yaml", "the config file")
func main() {
flag.Parse()
var c config.Config
conf.MustLoad(*configFile, &c)
....
}
InitGorm连接MySQL

ServiceContext中给DB赋值
go
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package svc
import (
"im-server/core"
"im-server/im_auth/auth_api/internal/config"
"gorm.io/gorm"
)
type ServiceContext struct {
Config config.Config
DB *gorm.DB
}
func NewServiceContext(c config.Config) *ServiceContext {
return &ServiceContext{
Config: c,
DB: core.InitGorm(c.MySql.DataSource),
}
}
如法炮制,我们下面开始集成 go-redis
- 安装依赖
bash
github.com/redis/go-redis@upgrade
2.在yaml配置文件中增加redis相关配置
bash
Name: auth
Host: 0.0.0.0
Port: 8889
MySql:
DataSource: root:a12345678@tcp(127.0.0.1:3306)/my_qq?charset=utf8mb4&parseTime=True&loc=Local
Redis:
Host: 127.0.0.1
Port: 6379
Password: ""
- 修改config文件
bash
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package config
import "github.com/zeromicro/go-zero/rest"
type Config struct {
rest.RestConf
MySql struct {
DataSource string
}
Redis struct {
Host string
Port int
Password string
}
}
go
package core
import (
"fmt"
"github.com/redis/go-redis"
)
func InitRedis(host string, port int) *redis.Client {
rdb := redis.NewClient(&redis.Options{
Addr: fmt.Sprintf("%s:%d", host, port),
Password: "", // No password set
DB: 0, // Use default DB
})
return rdb
}
bash
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package svc
import (
"github.com/redis/go-redis"
"im-server/core"
"im-server/im_auth/auth_api/internal/config"
"gorm.io/gorm"
)
type ServiceContext struct {
Config config.Config
DB *gorm.DB
Redis *redis.Client
}
func NewServiceContext(c config.Config) *ServiceContext {
return &ServiceContext{
Config: c,
DB: core.InitGorm(c.MySql.DataSource),
Redis: core.InitRedis(c.Redis.Host, c.Redis.Port),
}
}