Files
likedream/internal/framework/redis/redis.go
T
2025-11-03 21:23:27 +08:00

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)
}