Cardinals beat Astros 8-1