Skip to content

KamToHung/tiny-url

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tiny-url

项目介绍

本项目就是一个短链接项目,每次新增短链接的时候会在缓存里面存放一段时间,在失效时间内如果有新的请求过来 获取相同短链接则从缓存中拿,支持本地缓存和分布式缓存。这一方面也减少短链接的重复性。

一些问题

为什么使用缓存存放新短链接一段时间,不在数据库判重,判重的话不是可以解决短链接重复问题吗?

因为如果根据数据库判重的话,需要对url判重。url有可能很长,加上索引都超过了InnoDB引擎索引支持最大长度3072Bytes,从而 无法加索引,而且索引长度也很长,查询性能不好。如果需要判重,每次都要查询一次数据库,对IO性能也有一定影响,所以选择 缓存新短链接一段时间的做法比较妥当。

其实我也想过使用md5签名来处理url,如果遇到重复再次使用url来查询,也能算一种优化。但是缺点还是可能会对MySQL多次IO, 性能不好,并且客人使用同一条短链接真的可能只是一两天甚至一两个小时,所以也没选择这种做法。

那这种做法会造成重复url过多,数据库数据库成倍增加呀,怎么办?

因为客人使用同一条短链接真的可能只是一两天甚至一两个小时,所以造成重复url不会太多。假设数量增加不少,几千万甚至几亿,对 单表性能不好,可以通过分库分表,比如对hash(id),把id分散到不同的表中;也可以通过range分表,每张表保存id序列号在某个 数值范围。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages