短链接,通俗来说,就是将长的URL网址,通过程序计算等方式,转换为简短的网址字符串。
大家经常会收到一些莫名的营销短信,里面有一个非常短的链接让你跳转。新浪微博因为限制字数,所以也会经常见到这种看着不像网址的网址。短链的兴起应该就是微博限制字数激起了大家的创造力。
如果创建一个短链系统,我们应该做什么呢?
- 将长链接变为短链;
- 用户访问短链接,会跳转到正确的长链接上去。
查找到对应的长网址,并跳转到对应的页面。
短链生成方法#
短码一般是由 [a - z, A - Z, 0 - 9]
这62
个字母或数字组成,短码的长度也可以自定义,但一般不超过8位。比较常用的都是6位,6位的短码已经能有568亿种的组合:(26+26+10)^6
= 56800235584,已满足绝大多数的使用场景。
缓存方案
- 查询需求
个人认为对于几百个G的数据量都放在缓存肯定是不合适的,所以有个折中的方案:将最近3个月内有查询或者有新增的url放入缓存,使用LRU算法进行热更新。这样最近有使用的发概率会命中缓存,就不用走库。查不到的时候再走库更新缓存。
- 新增需求
对于新增的链接就先查缓存是否存在,缓存不存在再查库,数据库已经分表了,查询的效率也不会很低。
- 缓存的设计
查询的需求是用户拿着短链查询对应的真实地址,那么缓存的key只能是短链,可以使用 KV的形式存储。