如何设计一个高性能的短链接系统
背景做为刚转正的实习生,最后在PM的指导下设计了一款短链接系统,这里记录一下设计思路和实现细节。
设计思路短链接其实很简单,只要将长链接通过某种算法转换成短链接,然后通过短链接重定向到长链接即可。
设计思路很简单,直接使用一个接口/create创建短链接,并在数据库中存储长链接和短链接的映射关系。另一个/${hashcode}接口用于访问,通过短链接重定向到长链接。
创建短链接创建短链接的接口很简单,直接将长链接转换6位短链接,直接插入并使用数据库唯一键约束,如果短链接已经存在,则对比长链接是否一致,一致返回即可,不一致则是发生了碰撞。在长链接后拼接随机字符即可(入库的还是原链接)。
考虑到刚创建的链接可能会被频繁访问,所以我们在创建链接的时候就将短链接放入Redis缓存中,并设置缓存时间为有效期,这样可以减少数据库的访问。
数据库字段:
long_url: 长链接
tiny_url: 短链接
create_time: 创建时间
update_time: 更新时间
status: 状态
短链接生成算法对于短链接生成算法,可以使用数据库id自增或者雪花算法,也可以 ...