I think this is probably too small of a string to make conflicts sufficiently unlikely.  If we have a million strings stored, then the chance of a collision is `1e6/(len(string.lowercase)**6)`, which is around .3%.  We should either retry if there is a conflict, or make the string less likely.  bit.ly has 7 lowercase, digits and uppercase, which makes the chance of conflict more like 1e-7 if you have a million stored strings.  That sounds reasonably small for now.

Using a UUID gives the conflict chance at `1e6/(2**128)`, or roughly `3e-33`, which is much nicer to avoid conflicts without checking.