package redisconn import ( "context" "errors" "fmt" "time" "github.com/redis/go-redis/v9" ) // Ping bounds client.Ping under timeout and returns a wrapped error so // startup failures are easy to spot in service logs. // // timeout is typically taken from Config.OperationTimeout. func Ping(ctx context.Context, client *redis.Client, timeout time.Duration) error { if client == nil { return errors.New("ping redis: nil client") } if timeout <= 0 { return errors.New("ping redis: timeout must be positive") } pingCtx, cancel := context.WithTimeout(ctx, timeout) defer cancel() if err := client.Ping(pingCtx).Err(); err != nil { return fmt.Errorf("ping redis: %w", err) } return nil }