前言:    

    在看了这篇文章短 URL 系统是怎么设计的?之后打算自己实现一个出来。这个系统真的很简单,但是里面包含的内容却不少,体现出基本功。嗯,我的第一想法也是文章所说的最烂的方案


短URL系统主要解决下面几个问题:

1·长URL怎么对应短URL(基本)

    2·短URL怎么还原成长URL(基本)

    3·如何提高并发能力(进阶


长URL怎么对应短URL:

无限长的输入压缩成4,5个字符以内,这个压缩率是多么的厉害!

亿多了,足够使用30年了。这里留个问题:怎么使得62进制看起来没有规律?例如1A的下一个不是1B,而是1m?


如何生成发号器:

    数据库的自增字段啊!我使用的是redis.incr()


短URL怎么还原成长URL:

    使用redis的key-value存起来,空间换时间。


应付高并发:

    多台redis发号器(做法就像利用id分库分表,一台发1,3,5,7。。。,一台发2,4,6,8。。。)


    文章中还有几个有趣的问题,读者们可以自己细细看看。这里我就说说301和302的重定向。百度的短网址是使用302(临时)重定向的。这里有两个好处,第一对于SEO是有好处的,第二对流量统计也是有好处的。一个坏处是服务器压力加大了(浏览器还是会访问我们的服务器)。使用301(永久)重定向,如果从业务角度来说应该是使用301的,明显是永久的重定向嘛。但是302的好处明显比较好。

    最后附上我的代码github,这个系统从实现到结束,大概花1小时半左右,因为真的太简单了。


如果想短网址一开始就是4位或者5位呢?就直接从1000(62)开始发号呀!