Skip to content

Latest commit

 

History

History
 
 

48

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

短地址生成算法

短地址生成算法核心就两个内容

  • 生成短地址

  • 真实url和地址的id映射

  • 重定向:建议使用302 303 ,不要使用301

生成短地址

使用hash table 即可把一个不同长度的string值转为一个特定长度的哈希值,(这里常常采用MurmurHash算法)然后对这个哈希值进行位数转化就ok了。具体的来说可以将生成的10进制的数值转为为62进制的数值,转码以后就短了很多了。

当然还可以直接使用计数,每次一个原始的url就分配一个整数,然后根据这个整数转化为62位即可,即便是同样一个原始的url也可以有不同的短地址,或者 在生成短地址的时候可以看看是否已经生成过了,如果有了就不用再生成了,(这个地方借助数据库即可)

生成id的时候容易有瓶颈,就如限流算法中的,需要加锁,但是如果使用令牌桶机构,我们来控制id的生成,就可以避免这个。

映射

双向映射即可,一个原始地址只能对应一个短地址,同样的一个短地址只能对应一个长地址。将映射储存在k-v 数据库中,例如redis,可以得到很好的性能。