长度设计<br>
https://www.worldwidewebsize.com/ 查询有55亿网址<br>
一个64位整数足够了
微博的短网址服务用的是长度为7的字符串,一个字符可以看做是62进制的数(大小写字母加数字),<br>那么最大能表示{62}^7远远大于45亿。所以长度为7可以<br>
现代的web服务器(例如Apache, Nginx)大部分都区分URL里的大小写了,所以用大小写字母来区分不同的URL是没问题的。
生成设计
使用分布式发号器发号
拿着这个ID进行base62从10进制转换62进制的运算
存储ID-长网址的关系<br>
可以被用来从短网址->Id->长网址
存储短网址-长网址的关系
可以被用来直接短网址->长网址
https://segmentfault.com/a/1190000010516708
存储设计
MySQL
短网址为 primary key, 长网址为value
Redis
短网址为Key,长网址为Value
可以设置expire time
HTTP跳转设计
301是永久重定向
Google,百度等搜索引擎,搜索的时候会直接展示真实地址,那我们就无法统计到短地址被点击的次数了,也无法收集用户的Cookie, User Agent 等信息,这些信息可以用来做很多有意思的大数据分析
具体区别
https://www.jianshu.com/p/887d16ba71b9