The term ‘redundant’ is not ideal in this respect, as that implies a redundancy in reality rather than theory, as @canadianer points out.
Redundancy and Degeneracy
However I would mention that there is another term more usually applied to the fact that certain amino acids are encoded by more than one codon — degeneracy.
There is a Wikipedia entry on Codon Degeneracy:
Degeneracy of codons is the redundancy of the genetic code, exhibited as the multiplicity of three-base pair codon combinations that specify an amino acid. The degeneracy of the genetic code is what accounts for the existence of synonymous mutations.
Although this definition may appear circular in that it refers to redundancy, I am fairly sure that historically degeneracy was one of the attributes listed for the genetic code (e.g. by Crick):
specific
non-overlapping
comma-less
degenerate
universal (no longer true)
I perceive the traces of this in the Nature Scitable entry for the genetic code.
Synonymous Codon Usage
Codons that code for the same amino acid are termed ‘synonymous’. An obvious follow-up to the question and answer in this post is on the lines of “Does it matter which synonymous codon is used? Are all used equally and is it the same in all organisms and genes?”. The answer is that synonymous codon usage is non-random in various different circumstances. This is a broad area, but the Wikipedia entry on Codon Usage Bias is one place to start. There is also a question on this topic on this list.
“Does it also mean that some codons are not used?”
Answering this specific question here (documented in the references above) even where there is extreme bias in the codon usage in a genome, generally all possible codons are employed. This may be for regulatory reasons (if the tRNAs for these codons are rare, and hence this would be a way of slowing down translation for proteins only needed in small quantities), structural reasons (to allow a particular secondary structure for the mRNA) or some other less obvious reason.