URL长地址转短地址-发号器 mysql+redis

    短地址的应用已经普遍化,如微博的140字限制。但是短地址是怎样生成的呢,也许有人会说实现一个转化算法,例如hash、加密。但碰撞呢,URL这种精准的东西~

    思路

1、Redis存储已产生的<长地址:短地址>映射,新地址先判定是否存在短地址

2、利用mysql自增主键作为发号器,生成一个长地址、序号的映射,可用转为64位字符串作为短地址

3、短地址存储至Redis、mysql

    优化

对于并发量大的系统,可考虑实现多个发号器,如奇偶发号器、区间发号器

对于数据量太大,不想甚至不能缓存所有历史数据的,可以考虑缓存最近一段时间的数据,参考LRU缓存实现JAVA

 

对于非要找个算法来实现长转短的,记得有一个基于MD5的实现:

  • 将长网址经MD5生成签名,可均分成四段,每段类似为16进制字符串
  • 每段与16进制0x3fffffff位与操作,得到30位二进制
  • 30位又分成6段,每5位的数字作为字母表的索引取得特定字符,依次进行获得6位字符串
  • 这样一个md5字符串可以获得4个6位串,取里面的任意一个就可作为这个长url的短url地址

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值