Move (most) Redis communication to a controller.

This allows us to specify what to do on connection failure (1) in one
place, and (2) on a per-method basis.