As the application is read and write heavy. create a separate applications to read/get the long URL for a short URL and separate application servers to generate and write the Short URL for a given long URL.
the URL will be persisted in the database and at the same it it will be added in the cache.
Once the read request receives from the user first lookup into cache if found then return to the user else lookup to database and write into cache before retuning to the user.
cache evict policy will be lease recently used. the URLs which used less number of times will be removed from the cache.
The read any write services can scale independently as per the read/write user request.
Cache TTL is not needed here as Updated keys will be mark as invalid by the writer server and all other url will be un-changed.
Following are the key components of the system