Two methods

Hash Function

Pros: - use traditional hash function - randomly distributed - support url clean - hash functions cost time

cons: - not short - collisions, start collisions from 2^(n/2). solution: url + timestamp

Auto-increment index

Base10, Base62

Pros: - simple, good with rdb - can be short - no conflicts

cons: - not support url clean