Injectivity and surjectivity are only redundant if you're talking about functions whose domain has the same dimension/cardinality as its co-domain. For example, most functions from one variable calculus map real number to real numbers. An example of a function which maps to a set of a different cardinality is the projection function which, for example, maps elements of a two-dimensional space into a one dimensional space. In fact, projections are good examples of functions which are surjective, but not injective. For example, the projection onto the x-axis:

f: **R**^{2} -> **R** | (x,y) -> x

is surjective, but it is not injective. An example of a function which is injective but not surjective would be a map from a one-dimensional space to a two-dimensional space:

g: **R** -> **R**^{2} | x -> (x,0)