一种生成短网址的方法和终端与流程

文档序号:16807417发布日期:2019-02-10 13:11阅读:200来源:国知局
一种生成短网址的方法和终端与流程

本发明涉及互联网技术领域,尤其涉及一种生成短网址的方法和终端。

背景技

短网址指的是一种互联网上的技术与服务。此服务可以提供一个非常短小的网址以代替原来的可能较长的网址,将长的网址长度缩短。用户访问缩短后的网址时,通常将会重定向到原来的网址。大多数的网址缩短服务都提供有api,网址缩短服务在twitter的等一些每条消息有字数限制的微博客及其他社交网络中有广泛的使用。短网址的运用场景有:论坛签名有字数限制;隐藏个人的url广告推荐码;网站被列入spam名单;文件下载等场景。短网址的好处,主要有下面几个方面:

1、节省网址长度,便于社交化传播。

2、方便后台跟踪点击量、地域分布等用户统计。

3、规避关键词、域名屏蔽手段。

4、隐藏真实地址,适合做付费推广链接。

现有技术中,通常使用其他对系统兼容性较为单一的编程语言进行短网址的生成,软件部署时对单一系统的依赖性较高;通常使用传统的关系型数据库存储生成的短网址,当遇到高并发场景时,容易使系统陷入到异常状态。



技术实现要素:

本发明所要解决的技术问题是:提供一种生成短网址的方法和终端,可部署在多个操作系统,且支持高并发处理。

为了解决上述技术问题,本发明采用的一种技术方案为:

一种生成短网址的方法,包括步骤:

s1、使用java编程语言初始化redis的id值;

s2、每接收一次将长网址生成对应的短网址的请求,执行:

s21、将redis的id值自增预设值,并通过预设的进制算法对所述自增后的id值进行转换生成对应的短网址;

s22、将所述短网址作为key值,将所述短网址对应的长网址作为value值,将所述key值和value值作为一键值对存入所述redis。

为了解决上述技术问题,本发明采用的另一种技术方案为:

一种生成短网址的终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

s1、使用java编程语言初始化redis的id值;

s2、接收将长网址生成对应的短网址的请求,将redis的id值自增预设值,并通过预设的进制算法对所述自增后的id值进行转换生成对应的短网址;

s3、将所述短网址作为key值,将所述短网址对应的长网址作为value值,将所述key值和value值作为一键值对存入所述redis,并返回步骤s2。

本发明的有益效果在于:通过使用java编程语言初始化redis的id值,每接收将长网址生成对应的短网址的请求,将redis的id值自增预设值,并通过预设的进制算法对所述自增后的id值进行转换生成对应的短网址,将所述短网址作为key值,将所述短网址对应的长网址作为value值,将所述key值和value值作为一键值对存入所述redis;能够实现将软件部署在多个操作系统,大大降低计操作系统对软件的约束,使软件可以在各种环境下运行;并且支持高并发请求,避免遇到高并发场景时使系统陷入到异常状态。

附图说明

图1为本发明实施例的生成短网址的方法的流程图;

图2为本发明实施例的生成短网址的终端的结构示意图;

标号说明:

1、生成短网址的终端;2、存储器;3、处理器。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。

本发明最关键的构思在于:使用java语言将长网址转换生成对应的短网址,并将生成的短网址存入redis。

请参照图1,一种生成短网址的方法,包括步骤:

s1、使用java编程语言初始化redis的id值;

s2、每接收一次将长网址生成对应的短网址的请求,执行:

s21、将redis的id值自增预设值,并通过预设的进制算法对所述自增后的id值进行转换生成对应的短网址;

s22、将所述短网址作为key值,将所述短网址对应的长网址作为value值,将所述key值和value值作为一键值对存入所述redis。

从上述描述可知,本发明的有益效果在于:通过使用java编程语言初始化redis的id值,每接收将长网址生成对应的短网址的请求,将redis的id值自增预设值,并通过预设的进制算法对所述自增后的id值进行转换生成对应的短网址,将所述短网址作为key值,将所述短网址对应的长网址作为value值,将所述key值和value值作为一键值对存入所述redis;能够实现将软件部署在多个操作系统,大大降低计操作系统对软件的约束,使软件可以在各种环境下运行;并且支持高并发请求,避免遇到高并发场景时使系统陷入到异常状态。

进一步的,所述s1中,使用java编程语言初始化redis的id值的进制是10进制。

由上述描述可知,所述初始化redis的id值的进制是10进制,用于后续与预设进制算法进行转换生成预设进制算法的字符串。

进一步的,所述s2中,所述预设的进制算法为62进制算法;

所述通过预设的进制算法对所述自增后的id值进行转换生成对应的短网址包括:

通过62进制算法对所述自增后的id值转化成对应的62进制数值,根据预设的62进制的ascii码表将所述62进制数值转化成字符串,将所述字符串作为与所述长网址对应的短网址。

由上述描述可知,所述预设的进制算法为62进制算法,通过62进制算法将自增的redis的id值转换生成对应的短网址,用于和所述长网址配对存储。

进一步的,所述62进制的ascii码包括26个小写字母、26个大写字母和10个数字,对所述62个字符通过洗牌算法形成一个长度为62的字符数组,将所述字符数组作为预设的62进制的ascii码表,所述数组中1到62个字符分别对应62进制中的0-61。

由上述描述可知,通过洗牌算法将62进制的ascii码生成的62长度的字符数组作为62进制的ascii码表,所述62进制的ascii码表实现了和10进制的对应关系。

进一步的,所述步骤s2之后还包括:

s3、接收并处理短网址请求,返回与所述短网址对应的长网址。

由上述描述可知,当接收到短网址请求时,可进行处理并返回与短网址对应的长网址,实现用户访问短网址时跳转到对应的长网址。

进一步的,定义一个servlet,利用所述servlet接收并处理所述短网址请求。

由上述描述可知,利用所述servlet便于用户访问短网址时进行处理跳转到对应的长网址。

进一步的,所述步骤s3包括:

解析接收的短网址请求,获取所述短网址中的key值,根据所述key值,判断所述redis中是否有与所述key值对应的value值,若是,则将所述value值作为与所述短网址对应的长网址返回,否则,返回异常信息。

由上述描述可知,通过所述解析接收的短网址请求进行判断,并根据判断进行对应的返回,实现对各种短网址的请求进行不同的判断回馈。

进一步的,所述步骤s2中对存入redis中的每一键值对设置一有效期。

由上述描述可知,通过设置有效期可有效的进行数据的清理,并保持key值的重复利用,避免大批写入数据库后造成数据堆积使查询效率下降。

进一步的,所述步骤s2中对存入redis中的每一键值对设置级别,为不同级别的键值对设置不同的有效期。

由上述描述可知,所述对存入redis的所有键值对设置级别并对不同级别的键值对设置不同的有效期,实现对所生成的长网址对应的短网址的生命周期进行选择处理,灵活性高,提高了短网址生成后存储时间的可控制性和利用率。

进一步的,每隔预设时间遍历所述redis中存储的键值对,根据所述键值对的有效期,判断所述键值对是否失效,若是,则将所述键值对从所述redis中删除。

由上述描述可知,通过预设时间遍历存储的键值对并根据其有效期判断是否失效,并将失效的的键值对删除,能够将失效的键值对及时删除,可以保证数据库中存储的数据的有效性,避免数据的堆积。

请参照图2,一种生成短网址的终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:

s1、使用java编程语言初始化redis的id值;

s2、每接收一次将长网址生成对应的短网址的请求,执行:

s21、将redis的id值自增预设值,并通过预设的进制算法对所述自增后的id值进行转换生成对应的短网址;

s22、将所述短网址作为key值,将所述短网址对应的长网址作为value值,将所述key值和value值作为一键值对存入所述redis。

从上述描述可知,本发明的有益效果在于:通过使用java编程语言初始化redis的id值,每接收将长网址生成对应的短网址的请求,将redis的id值自增预设值,并通过预设的进制算法对所述自增后的id值进行转换生成对应的短网址,将所述短网址作为key值,将所述短网址对应的长网址作为value值,将所述key值和value值作为一键值对存入所述redis;能够实现将软件部署在多个操作系统,大大降低计操作系统对软件的约束,使软件可以在各种环境下运行;并且支持高并发请求,避免遇到高并发场景时使系统陷入到异常状态。

进一步的,所述s1中,使用java编程语言初始化redis的id值的进制是10进制。

由上述描述可知,所述初始化redis的id值的进制是10进制,用于后续与预设进制算法进行转换生成预设进制算法的字符串。

进一步的,所述s2中,所述预设的进制算法为62进制算法;

所述通过预设的进制算法对所述自增后的id值进行转换生成对应的短网址包括:

通过62进制算法对所述自增后的id值转化成对应的62进制数值,根据预设的62进制的ascii码表将所述62进制数值转化成字符串,将所述字符串作为与所述长网址对应的短网址。

由上述描述可知,所述预设的进制算法为62进制算法,通过62进制算法将自增的redis的id值转换生成对应的短网址,用于和所述长网址配对存储。

进一步的,所述62进制的ascii码包括26个小写字母、26个大写字母和10个数字,对所述62个字符通过洗牌算法形成一个长度为62的字符数组,将所述字符数组作为预设的62进制的ascii码表,所述数组中1到62个字符分别对应62进制中的0-61。

由上述描述可知,通过洗牌算法将62进制的ascii码生成的62长度的字符数组作为62进制的ascii码表,所述62进制的ascii码表实现了和10进制的对应关系。

进一步的,所述步骤s2之后还包括:

s3、接收并处理短网址请求,返回与所述短网址对应的长网址。

由上述描述可知,当接收到短网址请求时,可进行处理并返回与短网址对应的长网址,实现用户访问短网址时跳转到对应的长网址。

进一步的,定义一个servlet,利用所述servlet接收并处理所述短网址请求。

由上述描述可知,利用所述servlet便于用户访问短网址时进行处理跳转到对应的长网址。

进一步的,所述步骤s3包括:

解析接收的短网址请求,获取所述短网址中的key值,根据所述key值,判断所述redis中是否有与所述key值对应的value值,若是,则将所述value值作为与所述短网址对应的长网址返回,否则,返回异常信息。

由上述描述可知,通过所述解析接收的短网址请求进行判断,并根据判断进行对应的返回,实现对各种短网址的请求进行不同的判断回馈。

进一步的,所述步骤s2中对存入redis中的每一键值对设置一有效期。

由上述描述可知,通过设置有效期可有效的进行数据的清理,并保持key值的重复利用,避免大批写入数据库后造成数据堆积使查询效率下降。

进一步的,所述步骤s2中对存入redis中的每一键值对设置级别,为不同级别的键值对设置不同的有效期。

由上述描述可知,所述对存入redis的所有键值对设置级别并对不同级别的键值对设置不同的有效期,实现对所生成的长网址对应的短网址的生命周期进行选择处理,灵活性高,提高了短网址生成后存储时间的可控制性和利用率。

进一步的,每隔预设时间遍历所述redis中存储的键值对,根据所述键值对的有效期,判断所述键值对是否失效,若是,则将所述键值对从所述redis中删除。

由上述描述可知,通过预设时间遍历存储的键值对并根据其有效期判断是否失效,并将失效的的键值对删除,能够将失效的键值对及时删除,可以保证数据库中存储的数据的有效性,避免数据的堆积。

实施例一

请参照图1,一种生成短网址的方法,包括步骤:

s1、使用java编程语言初始化redis的id值,所述id值的进制为10进制;

s2、每接收一次将长网址生成对应的短网址的请求,执行:

s21、将redis的id值自增预设值;

具体的,所述预设值可设置为1,并通过预设的进制算法对所述自增后的id值进行转换生成对应的短网址,所述预设的进制算法为62进制算法;

具体的,通过62进制算法对所述自增后的id值转化成对应的62进制数值,所述62进制的ascii码包括26个小写字母、26个大写字母和10个数字,对所述62个字符通过洗牌算法形成一个长度为62的字符数组,将所述字符数组作为预设的62进制的ascii码表,所述数组中1到62个字符分别对应62进制中的0-61,根据所述的62进制的ascii码表将所述62进制数值转化成字符串,将所述字符串作为与所述长网址对应的短网址;

s22、将所述短网址作为key值,将所述短网址对应的长网址作为value值,将所述key值和value值作为一键值对存入所述redis。

实施例二

请参照图1,一种生成短网址的方法,包括步骤:

s1、使用java编程语言初始化redis的id值;

s2、每接收一次将长网址生成对应的短网址的请求,执行:

s21、将redis的id值自增预设值,并通过预设的进制算法对所述自增后的id值进行转换生成对应的短网址;

s22、将所述短网址作为key值,将所述短网址对应的长网址作为value值,将所述key值和value值作为一键值对存入所述redis;

其中,对存入redis中的每一键值对设置一有效期,优选的,对存入redis中的每一键值对设置级别,为不同级别的键值对对应的key值设置不同的有效期;

每隔预设时间遍历所述redis中存储的键值对,根据所述键值对的有效期,判断所述键值对是否失效,若是,则将所述键值对从所述redis中删除。

实施例三

请参照图1,一种生成短网址的方法,包括步骤:

s1、使用java编程语言初始化redis的id值;

s2、每接收一次将长网址生成对应的短网址的请求,执行:

s21、将redis的id值自增预设值,并通过预设的进制算法对所述自增后的id值进行转换生成对应的短网址;

s22、将所述短网址作为key值,将所述短网址对应的长网址作为value值,将所述key值和value值作为一键值对存入所述redis;

s3、定义一个servlet,接收并处理短网址请求,例如短网址的地址为:http://xx.cn/hrynr0,由域名和短地址的key组成,从servlet中,可以获取到key,上面的key就是hrynr0;解析接收的短网址请求,获取所述短网址中的key值,根据所述key值,判断所述redis中是否有与所述key值对应的value值,若是,则将所述value值作为与所述短网址对应的长网址重定向返回给客户端,否则,返回异常信息。

实施例四

请参照图1,一种生成短网址的方法,包括步骤:

s1、使用java编程语言初始化redis的id值,所述id值的进制为10进制;

s2、每接收一次将长网址生成对应的短网址的请求,执行:

s21、将redis的id值自增预设值;

具体的,所述预设值可设置为1,并通过预设的进制算法对所述自增后的id值进行转换生成对应的短网址,所述预设的进制算法为62进制算法;

具体的,通过62进制算法对所述自增后的id值转化成对应的62进制数值,所述62进制的ascii码包括26个小写字母、26个大写字母和10个数字,将所述62个字符数组的最后一个字符(下标为i对应的字符)作为逆序循环的开始,对下标为i对应的字符进行随机取余得到结果值下标j(被除数为下标i对应的字符,除数为下标i+1),将下标j对应的字符替代所述数组下标i对应的字符,继续循环下一个字符(即下标i-1对应的字符),直到循环至第一个字符替换结束为止,最终形成一个长度为62的乱序字符数组,将所述字符数组作为预设的62进制的ascii码表,所述数组中1到62个字符分别对应62进制中的0-61,根据所述的62进制的ascii码表将所述62进制数值转化成字符串,将所述字符串作为与所述长网址对应的短网址;

通过上述的乱序算法,网络入侵者无法猜测字符数组的生成规则而进行入侵,提高了安全性;

s22、将所述短网址作为key值,将所述短网址对应的长网址作为value值,将所述key值和value值作为一键值对存入所述redis;

其中,对存入redis中的每一键值对设置一有效期,优选的,对存入redis中的每一键值对设置级别,为不同级别的键值对对应的key值设置不同的有效期;

进一步的,级别的设置标准可由具体的业务来规定,例如:可根据访问的频率增加其对应的键值的有效期,初始设置键值的默认有效期统一为30天,当每访问一次就进行加权处理,即访问频率越高的短网址,其保留的期限越久;

每隔预设时间遍历所述redis中存储的键值对,根据所述键值对的有效期,判断所述键值对是否失效,若是,则将所述键值对从所述redis中删除;

进一步的,所述键值的有效期由redis的过期策略保障,无需程序特殊进行删除处理;

s3、定义一个servlet,接收并处理短网址请求,例如短网址的地址为:http://xx.cn/hrynr0,由域名和短地址的key组成,从servlet中,可以获取到key,上面的key就是hrynr0;解析接收的短网址请求,获取所述短网址中的key值,根据所述key值,判断所述redis中是否有与所述key值对应的value值,若是,则将所述value值作为与所述短网址对应的长网址重定向返回给客户端,否则,返回异常信息。

实施例五

请参照图2,一种生成短网址的终端1,包括存储器2、处理器3以及存储在所述存储器2上并可在所述处理器3上运行的计算机程序,所述处理器3执行所述计算机程序时实现实施例一中的各个步骤。

实施例六

请参照图2,一种生成短网址的终端1,包括存储器2、处理器3以及存储在所述存储器2上并可在所述处理器3上运行的计算机程序,所述处理器3执行所述计算机程序时实现实施例二中的各个步骤。

实施例七

请参照图2,一种生成短网址的终端1,包括存储器2、处理器3以及存储在所述存储器2上并可在所述处理器3上运行的计算机程序,所述处理器3执行所述计算机程序时实现实施例三中的各个步骤。

实施例八

请参照图2,一种生成短网址的终端1,包括存储器2、处理器3以及存储在所述存储器2上并可在所述处理器3上运行的计算机程序,所述处理器3执行所述计算机程序时实现实施例四中的各个步骤。

综上所述,本发明提供的一种生成短网址的方法和终端,通过使用java编程语言初始化redis的id值,每接收将长网址生成对应的短网址的请求,将redis的id值自增预设值,并通过预设的进制算法对所述自增后的id值进行转换生成对应的短网址,将所述短网址作为key值,将所述短网址对应的长网址作为value值,将所述key值和value值作为一键值对存入所述redis;能够实现将软件部署在多个操作系统,大大降低计操作系统对软件的约束,使软件可以在各种环境下运行;并且支持高并发请求,避免遇到高并发场景时使系统陷入到异常状态;redis采用的是内存机制,查询效率比关系型数据库更快,效率更高;对存入redis的所有键值对设置级别并对不同级别的键值对设置不同的有效期,可有效的进行数据的清理,并保持key值的重复利用,避免大批写入数据库后造成数据堆积使查询效率下降,实现对所生成的长网址对应的短网址的生命周期进行选择处理,灵活性高,提高了短网址生成后存储时间的可控制性和利用率;通过预设时间遍历存储的键值对并根据其有效期判断是否失效,并将失效的的键值对删除,能够将失效的键值对及时删除,可以保证数据库中存储的数据的有效性,避免数据的堆积。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1