diff --git a/app.go b/app.go index cf35d08..a4376ef 100644 --- a/app.go +++ b/app.go @@ -1,6 +1,8 @@ package main import ( + "context" + "github.com/go-redis/redis/v8" "github.com/gofiber/fiber/v2" "github.com/spf13/viper" "gofiber.study.skcks.cn/common/config" @@ -19,16 +21,38 @@ func loadApp() { } logger.Log.Infof("\n%#v", global.Config) + reloadRedis(global.Config) reloadDataSources(global.Config) app = reloadApp(global.Config) if err := app.Listen(global.Config.Server.Addr); err != nil { - logger.Log.Fatalf("[服务] 致命错误: %s", err) + logger.Log.Fatalf("[x] [Fiber] 致命错误: %s", err) } } +func reloadRedis(c *config.BasicConfig) { + if global.Redis != nil { + _ = global.Redis.Close() + } + + r := redis.NewClient(&redis.Options{ + Addr: c.Redis.Addr, + Password: c.Redis.Pass, + DB: c.Redis.DB, + }) + + ctx := context.Background() + _, err := r.Ping(ctx).Result() + if err != nil { + logger.Log.Fatalln("[x] [Redis] 连接失败: %s", err) + } + logger.Log.Infoln("[√] [Redis] 连接成功") + + global.Redis = r +} + func reloadDataSources(c *config.BasicConfig) { if global.DataSources != nil { _ = global.DataSources.Close() @@ -39,7 +63,7 @@ func reloadDataSources(c *config.BasicConfig) { logger.Log.Fatalf("[x] [数据源] 致命错误: %s", err) } - logger.Log.Infoln("[√] [初始化数据源]") + logger.Log.Infoln("[√] [数据源] 初始化完成") global.DataSources = connGroup diff --git a/common/config/config.go b/common/config/config.go index ea04c52..c1a82b5 100644 --- a/common/config/config.go +++ b/common/config/config.go @@ -3,6 +3,7 @@ package config type BasicConfig struct { Server ServerConfig `yaml:"server"` Mysql MysqlConfig `yaml:"mysql"` + Redis RedisConfig `yaml:"redis"` } type MysqlConfig struct { @@ -28,4 +29,5 @@ type ServerConfig struct { type RedisConfig struct { Addr string `yaml:"addr"` Pass string `yaml:"pass"` + DB int `yaml:"db"` } diff --git a/config.yaml b/config.yaml index d438571..7606a77 100644 --- a/config.yaml +++ b/config.yaml @@ -17,4 +17,9 @@ mysql: autoSync: true # 数据源 参考 xorm 数据源配置 dataSources: - - root:12341234@tcp(10.10.10.100:3306)/gofiber?charset=utf8mb4&parseTime=true&loc=Asia%2FShanghai \ No newline at end of file + - root:12341234@tcp(10.10.10.100:3306)/gofiber?charset=utf8mb4&parseTime=true&loc=Asia%2FShanghai + +redis: + addr: "10.10.10.100:16379" + pass: "12341234" + db: 0 diff --git a/global/redis.go b/global/redis.go new file mode 100644 index 0000000..f1a1c19 --- /dev/null +++ b/global/redis.go @@ -0,0 +1,5 @@ +package global + +import "github.com/go-redis/redis/v8" + +var Redis *redis.Client diff --git a/go.mod b/go.mod index 8a2ca80..fbbab1a 100644 --- a/go.mod +++ b/go.mod @@ -16,11 +16,14 @@ require ( github.com/PuerkitoBio/purell v1.1.1 // indirect github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect github.com/andybalholm/brotli v1.0.4 // indirect + github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/fsnotify/fsnotify v1.5.4 // indirect github.com/go-openapi/jsonpointer v0.19.5 // indirect github.com/go-openapi/jsonreference v0.19.6 // indirect github.com/go-openapi/spec v0.20.4 // indirect github.com/go-openapi/swag v0.19.15 // indirect + github.com/go-redis/redis/v8 v8.11.5 // indirect github.com/goccy/go-json v0.8.1 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/hashicorp/hcl v1.0.0 // indirect diff --git a/go.sum b/go.sum index 7f3354a..3262faa 100644 --- a/go.sum +++ b/go.sum @@ -77,6 +77,8 @@ github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -101,6 +103,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/denisenkom/go-mssqldb v0.10.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= @@ -140,6 +144,8 @@ github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7 github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.15 h1:D2NRCBzS9/pEY3gP9Nl8aDqGUcPFrwG2p+CNFrLyrCM= github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= +github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=