package database import ( "context" "fmt" "github.com/EthanCodeCraft/xlgo-core/config" "github.com/EthanCodeCraft/xlgo-core/logger" "github.com/redis/go-redis/v9" "go.uber.org/zap" ) var ( // RedisClient 全局 Redis 客户端 RedisClient *redis.Client ) // InitRedis 初始化 Redis 连接 func InitRedis(cfg *config.Config) error { RedisClient = redis.NewClient(&redis.Options{ Addr: cfg.Redis.Addr(), Password: cfg.Redis.Password, DB: cfg.Redis.DB, }) // 测试连接 ctx := context.Background() if err := RedisClient.Ping(ctx).Err(); err != nil { return fmt.Errorf("Redis 连接失败: %w", err) } logger.Info("Redis 连接成功", zap.String("addr", cfg.Redis.Addr())) return nil } // CloseRedis 关闭 Redis 连接 func CloseRedis() error { if RedisClient == nil { return nil } err := RedisClient.Close() RedisClient = nil return err } // HealthCheckRedis Redis 健康检查 func HealthCheckRedis(ctx context.Context) error { if RedisClient == nil { return fmt.Errorf("Redis 未初始化") } return RedisClient.Ping(ctx).Err() } // GetRedis 获取 Redis 客户端 func GetRedis() *redis.Client { return RedisClient }