Emacs has a superb undo system with practically infinite undo levels. However, I've always assumed that Emacs lacks a proper redo system. It turns out that I was wrong, but redoing in Emacs is not immediately obvious; when redoing a command, you're essentially "undoing" an undo.
After an undo, do a C-g followed by a C-x u (or whichever undo command you prefer, be it C-_ or C-/ ). Just like with a standard undo, you can use the repeat command of C-x z to save those carpals (because redoing literally is the same thing as undoing).