Files
soul-yongping/soul-api/internal/redis/redis.go

44 lines
931 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
}
client = redis.NewClient(opt)
ctx := context.Background()
if err := client.Ping(ctx).Err(); err != nil {
client = nil // 连接失败时清空避免后续使用超时cache 将自动降级到内存备用
log.Printf("redis: 连接失败,已降级到内存缓存(%v", err)
return err
}
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
}