设计二维码转活码的一个小方案

二维码转活码的方案

Posted by Hzy on March 30, 2020

如何合理的设计二维码转活码的方案

问题1:要如何设计长地址,转换成短地址?

1.发号策略:对每一个发送过来的长地址,用mysql的自增索引,例如第一个人是xxx/1.第二人是xxx/2,相当于实现了一个62进制的自增字段.

问题2:那么给一个短地址,我们是如何得到其的长地址?

2.1 长地址转短地址:

当遇到一个长地址时,我们将其存储到mysql中,同时id字段自增加1。

2.2 短地址转长地址:

首先,我们在数据库中自增字段id通过10进制存储,我们通过将URL短地址中的62进制转换成10进制,然后在去数据库中查询相应的id,通过这样的方式我们便能快速得到其长地址。

1
10进制转62进制,和62进制转10进制可以自己实现。

到目前为止,这样设计的有一个缺陷,数据库中并没有判断相同的长地址,是否已经转换过了,比如,id=1,其转换的长地址是百度首页链接,id=1000时,其长地址还是百度地址首页,但他们对应的短地址是不一样的,分别 1的62进制,和1000的62进制。

问题3:如何保证一个长地址,每次转换出来的都是一样的短地址。

方式一

我们用缓存维护一个key_value表,这个表的保存了最近1个小时内的,长地址和短地址对应关系。

流程大概如下:

1.长地址进来,先查询缓存表中查询其对应的短地址,有则返回,并且key过期时间验证1个时。

2.缓存表中查询不到,那么我们在数据库中添加,并且key_value缓存表中设置过期时间为1个小时。

方式二

或者是不是可以长连接设置索引,保证长连接不重复。

最后

文章参考https://www.zhihu.com/question/29270034 感谢学习