Files
soul-yongping/soul-api/internal/redis/redis.go
Alex-larget 28ad08da84 同步
2026-03-24 15:44:08 +08:00

46 lines
942 B
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package redis
import (
"context"
"log"
"github.com/redis/go-redis/v9"
)
var client *redis.Client
// Init 初始化 Redis 客户端url 为空或 "disable" 时跳过
func Init(url string) error {
if url == "" || url == "disable" {
return nil
}
opt, err := redis.ParseURL(url)
if err != nil {
return err
}
tmp := redis.NewClient(opt)
ctx := context.Background()
if err := tmp.Ping(ctx).Err(); err != nil {
_ = tmp.Close() // 避免未关闭客户端在后台持续 dial刷屏 pool 重试日志
client = nil
log.Printf("redis: 连接失败,已降级到内存缓存(%v", err)
return err
}
client = tmp
log.Printf("redis: connected to %s", opt.Addr)
return nil
}
// Client 返回 Redis 客户端,未初始化时返回 nil
func Client() *redis.Client {
return client
}
// Close 关闭连接(优雅退出时调用)
func Close() error {
if client != nil {
return client.Close()
}
return nil
}