43 lines
861 B
Go
43 lines
861 B
Go
package redis
|
|
|
|
import (
|
|
"context"
|
|
"likedream-goframe/internal/cst"
|
|
"likedream-goframe/internal/utils"
|
|
"time"
|
|
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
"github.com/redis/go-redis/v9"
|
|
"github.com/samber/oops"
|
|
)
|
|
|
|
var globalClient *redis.Client
|
|
var Nil = redis.Nil
|
|
|
|
func GetClient() *redis.Client {
|
|
if globalClient == nil {
|
|
panic(oops.New("redis is not initialized"))
|
|
}
|
|
|
|
return globalClient
|
|
}
|
|
|
|
func Init(ctx context.Context) {
|
|
redisUrl := g.Cfg().MustGetWithEnv(ctx, cst.ConfigRedisUrl).String()
|
|
|
|
redisOpts, e := redis.ParseURL(redisUrl)
|
|
redisOpts.DialTimeout = 30 * time.Second
|
|
redisOpts.ReadTimeout = 30 * time.Second
|
|
redisOpts.WriteTimeout = 30 * time.Second
|
|
utils.OkOrPanic(e, oops.WithContext(ctx).
|
|
With("redisUrl", redisUrl).
|
|
Wrap)
|
|
|
|
globalClient = redis.NewClient(redisOpts)
|
|
}
|
|
|
|
func Shutdown() {
|
|
e := globalClient.Close()
|
|
utils.OkOrPanic(e)
|
|
}
|