Shortening: Given a long URL, the system should generate a shorter, unique alias.
Redirection: When a user accesses a short link, the system must redirect them to the original long URL with minimal latency.
Custom Aliases: Users should optionally be able to provide a custom short link (e.g., short.ly/my-link).
Link Expiration: Links should have a default or user-defined expiration date, after which they are purged.