CN111026985A - 一种短链接生成方法、装置和服务器 - Google Patents
一种短链接生成方法、装置和服务器 Download PDFInfo
- Publication number
- CN111026985A CN111026985A CN201911215940.1A CN201911215940A CN111026985A CN 111026985 A CN111026985 A CN 111026985A CN 201911215940 A CN201911215940 A CN 201911215940A CN 111026985 A CN111026985 A CN 111026985A
- Authority
- CN
- China
- Prior art keywords
- short link
- link
- short
- long
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 66
- 238000006243 chemical reaction Methods 0.000 claims abstract description 8
- 238000003860 storage Methods 0.000 claims description 18
- 238000013479 data entry Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims 2
- 238000004891 communication Methods 0.000 abstract description 19
- 238000012545 processing Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000004904 shortening Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 2
- 230000007723 transport mechanism Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
- G06F16/9558—Details of hyperlinks; Management of linked annotations
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种短链接生成方法,适于在服务器中执行,该服务器与数据库通信连接,该数据库中生成有多个数据表,每个数据表名用m位字符表示,每位字符均为一个62进制的字符码,该方法包括步骤:接收待转换的长链接数组,并基于该数组中的长链接数目生成每个长链接对应的全局唯一数字标识;基于打乱顺序后的62进制字符码,对每个数字标识进行62进制转换后得到对应的短链接,该短链接由n位字符表示,且n=m+4,其中不足n位字符的在前边用默认字符补齐;以及解析短链接的前m位字符,确定以该前m位字符为表名的数据表,并以该短链接码为键、以对应的长链接为值,将该键值对存入该数据表中。本发明还一并公开了对应的短链接生成装置和服务器。
Description
技术领域
本发明涉及计算机与科学技术领域,尤其涉及一种短链接生成方法、装置和服务器。
背景技术
短链接又称短址、短网址、网址缩短、缩短网址、URL缩短等,指的是一种互联网上的技术与服务,其可以提供一个非常短小的URL以代替原来的可能较长的URL。用户访问缩短后的URL时会重定向到原来的URL。大多数的URL缩短服务都提供有API。URL缩短服务在Twitter等一些每条消息有字数限制的微博客及其他社交网络中有广泛的使用。
由于某些类似于Twitter的微博客服务对于每条贴子或消息有字数限制(多为140字)。某些BBS文章超过一行78个字符时,也会造成一些会自动为网址加上超链接的Telnet及BBS软件无法正确运行该动作,因此需要透过缩短网址的功能来达到网址缩短的目的。短链接另外也有方便用户记忆及发送网址的功能,短址可将太长的网址转换成15个字以内的替代网址。
短链接生成的实现方式可分为两种,一种是将长网址运用MD5算法,生成32位字符串,分为4段,每段1个字节,对这四段循环处理,取4个字节。然后每段和0x3fffffff(30位1)与操作,这30位分成6段,每5位的数字作为字母表的索引取得特定字符,依次进行获得6位字符串。在系统上线初期,由于生成的长网址少,不会重复,算法简单有效;但不适合应用在大数据量的场景中,会出现重复的短链接。
另外一种是把数字和字符组合做一定的映射后产生唯一的字符串,之后将短链接存入缓存和数据库中。但数据库一般存储量很大,导致查询性能低下,当缓存出现问题时,数据库即为性能瓶颈。因此,需要提供一种更高效的短链接处理方式。
发明内容
鉴于上述问题,本发明提出了一种短链接生成方法、装置和服务器,以力图解决或者至少解决上面存在的问题。
根据本发明的一个方面,提供了一种短链接生成方法,适于在服务器中执行,该服务器与数据库通信连接,该数据库中生成有多个数据表,每个数据表名用m位字符表示,每位字符均为一个62进制的字符码,该方法包括步骤:接收待转换的长链接数组,并基于该数组中的长链接数目生成每个长链接对应的全局唯一数字标识;基于打乱顺序后的62进制字符码,对每个数字标识进行62进制转换后得到对应的短链接,该短链接由n位字符表示,且n=m+4,其中不足n位字符的在前边用默认字符补齐;以及解析短链接的前m位字符,确定以该前m位字符为表名的数据表,并以该短链接码为键、以对应的长链接为值,将该键值对存入该数据表中。
可选地,在根据本发明的短链接生成方法中,62进制字符码包括26个小写字母、26个大写字母和10个数字,其经过洗牌算法打乱顺序后得到62位数组,该数组的62个字符分别对应数字0-61。
可选地,在根据本发明的短链接生成方法中,数据库中存储有全局信息表,全局唯一数字标识通过全局发号器生成,全局发号器中创建有定时器线程,用于定时将所生成的自增标识号存入到全局信息表中。
可选地,在根据本发明的短链接生成方法中,数据表中的每个数据条目包括短链接、对应的长链接、以及短链接的过期时间和创建时间中的一种或多种。
可选地,在根据本发明的短链接生成方法中,还包括步骤:创建本地一级缓存和redis二级缓存,并将用户近期请求访问过的短链接对应的数据条目存入该本地一级缓存和redis二级缓存中。
可选地,在根据本发明的短链接生成方法中,将用户近期请求访问过的短链接所在的数据条目存入本地一级缓存和redis二级缓存中的步骤包括:接收用户的短链接访问请求,该访问请求中包括请求的短链接;以短链接为键,在本地一级缓存中查询该短链接对应的长链接;若查询到,则重定向该长链接;反之,则在redis二级缓存中查询该短链接对应的长链接。
可选地,在根据本发明的短链接生成方法中,还包括步骤:若在redis二级缓存中查询到该短链接对应的长链接,则重定向该长链接,并将该短连接所在的数据条目存入本地一级缓存中;若在redis二级缓存中未查询到该短链接对应的长链接,则解析该短链接的前m位,确定对应的数据表名,并从对应的数据表中查询该短链接对应的长链接进行重定向,并将该短链接所在的数据条目存入本地一级缓存和redis二级缓存中。
可选地,在根据本发明的短链接生成方法中,m=2,n=6,本地一级缓存的内存为256MB,默认字符为所述62位数组中的首字符。
可选地,在根据本发明的短链接生成方法中,当全局发号器生成的号码达到62n时,更新m=m+1,n=n+1。
可选地,在根据本发明的短链接生成方法中,接收待转换的长链接数组的步骤包括:创建批量生成短链接的接口,并通过该接口接收所述长链接数组,其中该接口的传入参数为长链接数组和对应的短链接过期时间。
可选地,在根据本发明的短链接生成方法中,还包括步骤:定期清除已过期的短链接数据条目。
可选地,在根据本发明的短链接生成方法中,数据表名包括前缀和后缀,前缀为短连接表的提示字,后缀为m位字符。
根据本发明的另一个方面,提供了一种短链接生成装置,适于驻留在服务器中,该服务器与数据库通信连接,该数据库中生成有多个数据表,每个数据表名用m位字符表示,每位字符均为一个62进制的字符码,所述装置包括:长链接接收模块,适于接收待转换的长链接数组,基于该数组中的长链接数目生成每个长链接对应的全局唯一数字标识;短链接生成模块,适于基于打乱顺序后的62进制字符码,对每个数字标识进行62进制转换后得到对应的短链接,该短链接由n位字符表示,且n=m+4,其中不足n位字符的在前边用默认字符补齐;以及短链接存储模块,适于解析短链接的前m位字符,确定以该前m位字符为表名的数据表,并以该短链接码为键、以对应的长链接为值,将该键值对存入该数据表中。
根据本发明的又一方面,提供一种服务器,包括:一个或多个处理器;存储器;以及一个或多个程序,其中一个或多个程序存储在存储器中并被配置为由一个或多个处理器执行,该一个或多个程序被处理器执行时实现如上所述的短链接生成方法的步骤。
根据本发明的又一方面,提供一种存储一个或多个程序的可读存储介质,该一个或多个程序包括指令,该指令当由服务器执行时实现如上所述的短链接生成方法的步骤。
根据本发明的技术方案,能够批量生成不重复短链接,且能够根据短链接高效提取出长链接,快速响应用户。在短链接的生成过程中,制作全局发号器,每次生成短链接前,根据需要生成短链的数量,向全局发号器取唯一号段,保证短链接全局唯一。短链接的前m位(如前两位)为数据库表名标识,以分库分表持久化存储短链接。
另外,本发明为每个短链接建立本地一级缓存,将用户最近请求的短链接都放在本地一级缓存中,如果本地缓存查询不到数据,再查询redis二级缓存,redis二级缓存未查询到时才查询数据库。其中,redis二级缓存将生成的短链接和长链接进行关联,加快查询速度,并在数据库中以短链接做唯一索引,加快查询速度。而且,本发明也支持短链接过期机制,用户调用生成短链接接口时,可以传递过期参数,数据库中会存储该短链接的过期时间,如果用户不传递过期时间,则默认永不过期。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的短链接生成系统100的结构图;
图2示出了根据本发明一个实施例的服务器200的结构图;
图3示出了根据本发明一个实施例的短链接生成方法300的流程图;以及
图4示出了根据本发明一个实施例的短链接生成装置400的结构图;
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的短链接生成系统100的示意图。图1所示的短链接生成系统100包括多个客户端110、以及服务器120和数据库130。应当指出,图1中的系统100仅是示例性的,在具体的实践情况中,系统100中可以有不同数量的客户端110、以及服务器120和数据库130,本发明对系统中所包括的设备数目不做限制,这些设备也可以驻留在多个地理位置中。
一般地,客户端110可以向服务器120发送短链接访问请求,服务器120从数据库中查询该短链接对应的长链接,以重定向到该长链接。其中,客户端110可以是诸如手机、平板电脑、笔记本电脑、电视盒子、可穿戴设备等可以接入互联网的设备。服务器120例如文件服务器、数据存储装置服务器、应用程序服务器和WEB服务器等,也可以实现为包括桌面计算机和笔记本计算机配置的个人计算机,还可以实现为小尺寸便携(或者移动)电子设备的一部分。数据库130可以作为本地数据库驻留于服务器120中,也可以作为远程数据库设置于服务器120之外,本发明对数据库130的部署方式不做限制。
另外,数据库130中生成有多个数据表,数据表中可存储多个数据条目,每个数据条目可以包括短链接、对应的长链接、以及短链接的过期时间和创建时间中的一种或多种。其中,短链接就是缩短后的链接,长链接是该短链接的原始链接,过期时间指该短链接达到该时间时就失效,不能再继续使用。一般用户调用生成短链接接口时可以传递过期参数,数据库中会存储该短链接的过期时间。如果用户不传递过期时间,则默认永不过期,该过期时间项空置。创建时间就是生成该短链接的时间。
每个数据表名用m位字符表示,每位字符均为一个62进制的字符码。62进制字符码包括“a-z”这26个小写字母、“A-Z”这26个大写字母和“0-9”这10个数字,共62个字符。而且,可以将该62进制字符码基于洗牌算法打乱顺序,得到62位数组。该洗牌算法可以将该62进制码任意打乱,本发明对其打乱后所得到的62位数组的字符顺序不作限制。该62位数组中的62个字符分别对应十进制中的数字0-61。
因此,数据库中的数据表名可以是该数组中任意两个字符的组合,通常可按数组中的字符排序,从前到后依次命名。各数据表可以预先生成,也可以在需要时才生成,一般当上一张数据表的数据快达到上限时,可以再生成一个新的数据表,并命名新的数据表名。
根据一个实施例,数据表名包括前缀和后缀,前缀为短连接表的提示字,后缀为m位字符。前缀例如可以是shorten_url,则完整数据表名为shorten_url_m位字符。若m=2,则可以有数据表名shorten_url_va、shorten_url_1s等。这样可以实现分库分表存储短链接与长链接的详细信息,通过设置短链接为唯一索引,可以加快数据库查询。
根据另一个实施例,服务器120还可以创建本地一级缓存140和redis二级缓存150,用于存储用于近期查询过的短链接条目,方便用户再次查询时,能直接从该本地一级缓存140或redis二级缓存150查询对应的长链接,就不用再去数据库中查询,提高请求响应效率。其中,本地一级缓存140缓存在本服务器的内存中,所以比redis二级缓存快很多,可以加快访问速度。但redis二级缓存150的存储量小,可以存储最近更多的短链接数据条目。
图2示出了根据本发明一个实施例的服务器200的结构框图。在基本的配置202中,服务器200典型地包括系统存储器206和一个或者多个处理器204。存储器总线208可以用于在处理器204和系统存储器206之间的通信。
取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器204可以包括诸如一级高速缓存210和二级高速缓存212之类的一个或者多个级别的高速缓存、处理器核心214和寄存器216。示例的处理器核心214可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器218可以与处理器204一起使用,或者在一些实现中,存储器控制器218可以是处理器204的一个内部部分。
取决于期望的配置,系统存储器206可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器206可以包括操作系统220、一个或者多个应用222以及程序数据224。在一些实施方式中,应用222可以布置为在操作系统上利用程序数据224进行操作。程序数据224包括指令,在根据本发明的服务器200中,程序数据224包含用于执行短链接生成方法300的指令。
服务器200还可以包括有助于从各种接口设备(例如,输出设备242、外设接口244和通信设备246)到基本配置202经由总线/接口控制器230的通信的接口总线240。示例的输出设备242包括图形处理单元248和音频处理单元250。它们可以被配置为有助于经由一个或者多个A/V端口252与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口244可以包括串行接口控制器254和并行接口控制器256,它们可以被配置为有助于经由一个或者多个I/O端口258和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备246可以包括网络控制器260,其可以被布置为便于经由一个或者多个通信端口264与一个或者多个其他服务器262通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
服务器200可以实现为服务器,例如文件服务器、数据库服务器、应用程序服务器和WEB服务器等,也可以实现为小尺寸便携(或者移动)电子设备的一部分,这些电子设备可以是诸如蜂窝电话、个人数字助理(PDA)、无线网络浏览设备、应用专用设备、或者可以包括上面任何功能的混合设备。服务器200还可以实现为包括桌面计算机和笔记本计算机配置的个人计算机。在一些实施例中,服务器200被配置为执行短链接生成方法300。
图3示出了根据本发明一个实施例的短链接生成方法300的流程示意图。方法300在服务器中执行,如在服务器200中执行,以便将长链接转换为短链接存储。
如图3所示,该方法始于步骤S310。在步骤S310中,接收待转换的长链接数组,并基于该数组中的长链接数目生成每个长链接对应的全局唯一数字标识。
根据一个实施例,接收待转换的长链接数组的步骤包括:创建批量生成短链接的接口,并通过该接口接收长链接数组,其中该接口的传入参数为长链接数组和对应的短链接过期时间。其中长链接数组包括多个待转换的超链接,例如[https://www.autohome.com.cn、https://club.autohome.com.cn,https://k.autohome.com.cn]等。
根据另一个实施例,可以调用全局发号器来生成每个长链接对应的全局唯一数字标识。全局发号器也可以称为ID产生器或统一发号器,能为每个对象(如长链接)生成一个全局唯一的标识。本领域技术人员可以根据现有技术自行创建全局发号器,本发明对此不作限制。批量生成短链接接口时,首先请求全局发号器,传入该批长链接的数量,获得最后一个全局发号器的数字号码,这样就能确定该批长链接所有的唯一数字号码。全局发号器逻辑如下:调用redis的INCRBY命令,传入该批长链接的数量,获得出实际INCRBY后的结果,该结果值即为该批长链接的最后一个数字号码。
例如,上批长链接的最后一个数字号码为100,新来的一批长链接共100个,则全局发号器从101开始生成100个数字号码,也就是101-200,分别分配给该100个长链接。每次通过发号器获取的数字号码都是一个区间段的,这样不用每次生成一个短链就调用一次发号器,通过一次批量调用后可一次批量生产短链。这里,也可以不根据长链接的数量来获取号码,此时可提前单次调用发号器取唯一区间号段,然后当接收批量长链接请求时,将该区间段号码依次分配给长链接,如果仍有号码空余未分配,则继续等待下批长链接过来后再分配;如果号码不够,则再调用发号器去生成新号码来分配。
为了保证全局发号器缓存数据的完整性和持久性,可以在数据库中存储全局信息表(global_info表),在全局发号器中创建有定时器线程,该线程可以定时将所生成的自增标识号存入到全局信息表中,避免机器重启时数据丢失。例如,每隔1min将全局发号器redis中该增长的数字值存储到数据库的全局信息表中。全局发号器在程序启动时,会先扫描redis中是否计数器有值,如果没有值,则会从数数据库的全局信息表查询出计数器的值以保存在redis中。
通过全局发号器生成的全局唯一数字标识可计算对应的短链接字符,其算法如下:将该数字标识对62进行除法操作,获得的余数继续对62进行除法操作,直到不能除为止,即为十进制到62进制的进制转换算法。每个对应的商和最后的余数即为最后结果,如果所得的字符数不够6位,则用默认字符补齐。默认字符为62位数组中的首字符。假设62位数组的前几个字符是vPh,则可用字符v来自动补齐该n位字符。
以六位短链接为例,若调用全局发号器(自增序列)后获得号码为600,将600除以62,商9余数为58;将商58除以62,商0余数为58。根据本发明的62位字符数组,可以查找得出600对应的字符为LD,其不足6位,则在前面补齐vvvvv,得出600对应的六位短链接为vvvvLD。
通过步骤S310,生成了每个长链接对应的全局唯一数字号码。
随后,在步骤S320中,基于打乱顺序后的62进制字符码,对每个数字标识进行62进制转换后得到对应的短链接,该短链接由n位字符表示,且n=m+4,其中不足n位字符的在前边用默认字符补齐。
一般地,可以设定m=2,n=6,也就是数据表名表示为两位字符;短链接表示为六位字符,或在前边用默认字符自动填充为六位字符。这样每个数据表的数据最多只能存储624=14,77,336个短网址,而数据表中数据越少,访问速度就越快,而且该方式非常适合mysql等免费开源的数据库中使用。
根据一个实施例,当全局发号器生成的号码达到62n时,更新m=m+1,n=n+1。例如,初始时m=2、n=6,但当全局发号器号码达到626=56,800,235,584时,则需要扩充短链接字符数和数据表的数量,只要保证短链接的最后4位为真正的短链接标识、前几位为数据库表名标识即可。此时每个数据表依然存储624个数据量,但数据表名变更为三位字符表示,共可有623个数据表。
通过步骤S320,生成了每个长链接对应的短链接码。
随后,在步骤S330中,解析短链接的前m位字符,确定以该前m位字符为表名的数据表,并以该短链接码为键、以对应的长链接为值,将该键值对存入该数据表中。
根据每个长链接对应的短链接对应的前m位字符,即为存储的数据表标识。以m=2为例,如前两位标识为vv,则要存储的数据库表名为:shorten_url_vv,以短链接为key、以对应的长链接为value,和过期时间一起批量存入到该数据库表中。
根据本发明的一个实施例,方法300还可以包括步骤:创建本地一级缓存和redis二级缓存,并将用户近期请求访问过的短链接对应的数据条目存入本地一级缓存和redis二级缓存中。其中,一级缓存例如是java的ehcache,其在web服务器启动时即会创建出来。二级缓存即redis缓存服务器,由redis-server程序启动。每次调用批量生成短链接接口的时,当数据插入数据库后,即可通过线程池,采用单独线程将数据批量刷入到ehcache和redis中,降低数据库访问频率,加快数据响应速度,减少数据库压力。
具体而言,可以根据以下方法将用户近期请求访问过的短链接对应的数据条目进行缓存存储:接收用户的短链接访问请求,该访问请求中包括请求的短链接。之后,以该短链接为key,在本地一级缓存中查询是否有对应的长链接。若在本地一级缓存中查询到该短链接对应的长链接时,直接重定向到该长链接,从而加快数据响应速度。
而当本地一级缓存中未查询到对应的长链接时,再去redis二级缓存中查询是否存在该短链接对应的长链接。若查询到了对应的超链接,则重定向到该长链接,并将该短链接所在的数据条目(短链接、长链接、过期时间、创建时间等)存入本地一级缓存。若未查询到,则解析该短链接的前m位字符,定位该短链接所在的数据表名,并从对应的数据表中查询该短链接对应的长链接进行重定向,并将该短链接所在的数据条目存入本地一级缓存和redis二级缓存中,以备下次查询使用时直接重定向到该长链接。
这里,由于短链接已散落在各个数据库表中,因此根据短链接的前两位字符即可计算出该短链接所在的数据库表中,进而就能从该表中查出对应的长链接地址。而且每个数据库表中,短链接都是唯一索引,查询速度非常快。需要说明的是,本发明中所指的查询到,是指查询到的短链接数目条目未过期(短链接过期时间大于等于当前时间),如果查询到该条目中短链接已过期,则提示用户该短链接已过期,代表该短链接失效。另外,方法300还可以通过在数据库中修改过期时间,来对将要过期的短链接进行续期,所修改的内容会同步到对应的两级缓存中。
作为优选地,本地一级缓存的内存设定为256MB,redis二级缓存的内存比一级缓存内存大。当缓存快达到内存限制时,会自动清除加入时间较早的或已过期的短链接数据条目。基于此,本发明还可以定期清除数据库中、本地一级缓存和redis二级缓存中的已过期短链接。
综上所述,本发明通过发号器可成全局唯一且不重复的短链接,如果整个系统生成的短链接数量已超过上限,也能快速通过扩充短链接字符支持更多的短链接。全局信息表中存储了全局发号器的唯一自增数字标识,发号器号码永不丢失且访问速度快。该方案支持短链接的过期失效处理和续期处理,保证系统的可用性和完备性。短链接分库分表存储,数据表可以水平扩展,理论上可支持无限个短链接数目。通过两级缓存策略,如果在缓存中查找不到数据,也能通过数据库索引快速定位数据,实现海量数据的快速查找,而且永不丢失,保证用户随时随地都能访问。
图4示出了根据本发明一个实施例的短链接生成装置400的结构框图,该装置400可以驻留在服务器200中。该服务器与数据库通信连接,该数据库中生成有多个数据表,每个数据表名用m位字符表示,每位字符均为一个62进制的字符码。数据表中的每个数据条目包括短链接、对应的长链接、以及短链接的过期时间和创建时间中的一种或多种。如图4所示,装置400包括:长链接接收模块410、短链接生成模块420和短链接存储模块430。
长链接接收模块410接收待转换的长链接数组,基于该数组中的长链接数目生成每个长链接对应的全局唯一数字标识。其中,全局唯一数字标识通过全局发号器生成,数据库中存储有全局信息表,全局发号器中创建有定时器线程,用于定时将所生成的自增标识号存入到所述全局信息表中。
根据一个实施例,长链接接收模块410可以创建批量生成短链接的接口,并通过该接口接收所述长链接数组,其中该接口的传入参数为长链接数组和对应的短链接过期时间。长链接接收模块410可以进行与上面在步骤S310中描述的处理相对应的处理,这里不再展开赘述。
短链接生成模块420基于打乱顺序后的62进制字符码,对每个数字标识进行62进制转换后得到对应的短链接,该短链接由n位字符表示,且n=m+4,其中不足n位字符的在前边用默认字符补齐。
其中,62进制字符码包括26个小写字母、26个大写字母和10个数字,其经过洗牌算法打乱顺序后得到62位数组,该数组的62个字符分别对应数字0-61。默认字符为62位数组中的首字符。优选地,m=2,n=6。当全局发号器生成的号码达到62n时,更新m=m+1,n=n+1。短链接生成模块420可以进行与上面在步骤S320中描述的处理相对应的处理,这里不再展开赘述。
短链接存储模块430解析短链接的前m位字符,确定以该前m位字符为表名的数据表,并以该短链接码为键、以对应的长链接为值,将该键值对存入该数据表中。根据一个实施例,短链接存储模块430还可以定期清除已过期的短链接数据条目。短链接存储模块430可以进行与上面在步骤S330中描述的处理相对应的处理,这里不再展开赘述。
根据本发明的一个实施例,装置400还可以包括缓存模块(图中未示出),适于创建本地一级缓存(内存可以为256MB)和redis二级缓存,并将用户近期请求访问过的短链接对应的数据条目存入本地一级缓存和redis二级缓存中。具体而言,缓存模块可以接收用户的短链接访问请求,该访问请求中包括请求的短链接;以短链接为键,在本地一级缓存中查询该短链接对应的长链接;若查询到,则重定向该长链接;反之,则在redis二级缓存中查询该短链接对应的长链接。
若在redis二级缓存中查询到该短链接对应的长链接,则缓存模块重定向该长链接,并将该短连接所在的数据条目存入本地一级缓存中。若在redis二级缓存中未查询到该短链接对应的长链接,则缓存模块解析该短链接的前m位,确定对应的数据表名,并从对应的数据表中查询该短链接对应的长链接进行重定向,并将该短链接所在的数据条目存入本地一级缓存和redis二级缓存中。
根据本发明的技术方案,能够批量生成不重复的短链接,适应于海量数据的查找。其中全局发号器批量生成每个长链接的唯一数字号码,发号器每生成一批号码后都会自增1,该发号器存储在缓存中,并定时刷新到数据库中,以防止机器重启,缓存丢失。短链接和长链接信息分库分表保存,每个短链接的前两位字符为每个表的标识,每个表可以存储624个短链接。根据短链接的前两位字符可以获得数据表的索引值,就能定位到对应的数据表。适应了海量数据的存储和持久化保存。短链接访问时,优先从两级缓存中查询,如果两级缓存中都获取不到,再查询数据库,这样可以加快访问速度,解放数据库。本发明用户体验良好,系统可用性高,且功能完备。
A8、如A6所述的方法,其中,m=2,n=6,所述本地一级缓存的内存为256MB,所述默认字符为所述62位数组中的首字符。A9、如A1-A7中任一项所述的方法,其中,当全局发号器生成的号码达到62n时,更新m=m+1,n=n+1。A10、如A1-A9中任一项所述的方法,其中,所述接收待转换的长链接数组的步骤包括:创建批量生成短链接的接口,并通过该接口接收所述长链接数组,其中该接口的传入参数为长链接数组和对应的短链接过期时间。A11、如A5所述的方法,还包括步骤:定期清除已过期的短链接数据条目。
从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的短链接生成方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的而非限制性的,本发明的范围由所附权利要求书限定。
Claims (10)
1.一种短链接生成方法,适于在服务器中执行,所述服务器与数据库通信连接,该数据库中生成有多个数据表,每个数据表名用m位字符表示,每位字符均为一个62进制的字符码,所述方法包括步骤:
接收待转换的长链接数组,并基于该数组中的长链接数目生成每个长链接对应的全局唯一数字标识;
基于打乱顺序后的62进制字符码,对每个数字标识进行62进制转换后得到对应的短链接,该短链接由n位字符表示,且n=m+4,其中不足n位字符的在前边用默认字符补齐;以及
解析短链接的前m位字符,确定以该前m位字符为表名的数据表,并以该短链接码为键、以对应的长链接为值,将该键值对存入该数据表中。
2.如权利要求1所述的方法,其中,所述62进制字符码包括26个小写字母、26个大写字母和10个数字,其经过洗牌算法打乱顺序后得到62位数组,该数组的62个字符分别对应数字0-61。
3.如权利要求1所述的方法,其中,所述数据库中存储有全局信息表,所述全局唯一数字标识通过全局发号器生成,所述全局发号器中创建有定时器线程,用于定时将所生成的自增标识号存入到所述全局信息表中。
4.如权利要求1-3中任一项所述的方法,其中,所述数据表中的每个数据条目包括短链接、对应的长链接、以及短链接的过期时间和创建时间中的一种或多种。
5.如权利要求4所述的方法,还包括步骤:
创建本地一级缓存和redis二级缓存,并将用户近期请求访问过的短链接对应的数据条目存入所述本地一级缓存和redis二级缓存中。
6.如权利要求5所述的方法,所述将用户近期请求访问过的短链接所在的数据条目存入本地一级缓存和redis二级缓存中的步骤包括:
接收用户的短链接访问请求,该访问请求中包括请求的短链接;
以短链接为键,在本地一级缓存中查询该短链接对应的长链接;
若查询到,则重定向该长链接;反之,则在redis二级缓存中查询该短链接对应的长链接。
7.如权利要求6所述的方法,还包括步骤:
若在redis二级缓存中查询到该短链接对应的长链接,则重定向该长链接,并将该短连接所在的数据条目存入本地一级缓存中;
若在redis二级缓存中未查询到该短链接对应的长链接,则解析该短链接的前m位,确定对应的数据表名,并从对应的数据表中查询该短链接对应的长链接进行重定向,并将该短链接所在的数据条目存入本地一级缓存和redis二级缓存中。
8.一种短链接生成装置,适于驻留在服务器中,所述服务器与数据库通信连接,该数据库中生成有多个数据表,每个数据表名用m位字符表示,每位字符均为一个62进制的字符码,所述装置包括:
长链接接收模块,适于接收待转换的长链接数组,基于该数组中的长链接数目生成每个长链接对应的全局唯一数字标识;
短链接生成模块,适于基于打乱顺序后的62进制字符码,对每个数字标识进行62进制转换后得到对应的短链接,该短链接由n位字符表示,且n=m+4,其中不足n位字符的在前边用默认字符补齐;以及
短链接存储模块,适于解析短链接的前m位字符,确定以该前m位字符为表名的数据表,并以该短链接码为键、以对应的长链接为值,将该键值对存入该数据表中。
9.一种服务器,包括:
至少一个处理器;以及
包括计算机程序指令的至少一个存储器;
所述至少一个存储器和所述计算机程序指令被配置为与所述至少一个处理器一起使得所述服务器执行如权利要求1-11中任一项所述的方法。
10.一种存储一个或多个程序的可读存储介质,所述一个或多个程序包括指令,所述指令当由服务器执行时,使得所述服务器执行根据权利要求1-7中所述的方法中的任一方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911215940.1A CN111026985A (zh) | 2019-12-02 | 2019-12-02 | 一种短链接生成方法、装置和服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911215940.1A CN111026985A (zh) | 2019-12-02 | 2019-12-02 | 一种短链接生成方法、装置和服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111026985A true CN111026985A (zh) | 2020-04-17 |
Family
ID=70207787
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911215940.1A Pending CN111026985A (zh) | 2019-12-02 | 2019-12-02 | 一种短链接生成方法、装置和服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111026985A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111651695A (zh) * | 2020-05-29 | 2020-09-11 | 深圳前海微众银行股份有限公司 | 一种短链接的生成与解析方法及装置 |
CN112861032A (zh) * | 2021-01-20 | 2021-05-28 | 银盛通信有限公司 | 一种短链接生成的方法和系统 |
CN113378083A (zh) * | 2021-05-19 | 2021-09-10 | 北京沃东天骏信息技术有限公司 | 一种短链接生成方法、装置、设备及存储介质 |
CN113761406A (zh) * | 2021-09-03 | 2021-12-07 | 深圳市丰巢网络技术有限公司 | 一种智能柜二维码短链生成方法、装置、介质及电子设备 |
CN114692027A (zh) * | 2020-12-29 | 2022-07-01 | 福建天泉教育科技有限公司 | 一种将短链接还原成长链接的方法与终端 |
CN115587609A (zh) * | 2022-09-27 | 2023-01-10 | 深圳市智码通科技有限公司 | 短链接二维码生成方法和装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120047577A1 (en) * | 2010-08-23 | 2012-02-23 | Microsoft Corporation | Safe url shortening |
CN106210161A (zh) * | 2016-06-24 | 2016-12-07 | 中国银联股份有限公司 | 一种短链接生成方法及系统 |
CN106817375A (zh) * | 2017-02-07 | 2017-06-09 | 上海斐讯数据通信技术有限公司 | 链接伪装系统及方法 |
CN106886568A (zh) * | 2017-01-12 | 2017-06-23 | 掌阅科技股份有限公司 | 一种分表方法、装置及电子设备 |
CN106933854A (zh) * | 2015-12-30 | 2017-07-07 | 阿里巴巴集团控股有限公司 | 短链接处理方法、装置及服务器 |
CN107729409A (zh) * | 2017-09-26 | 2018-02-23 | 中国银联股份有限公司 | 一种短链接生成方法及装置 |
CN109669960A (zh) * | 2018-12-25 | 2019-04-23 | 钛马信息网络技术有限公司 | 在微服务中通过多级缓存避免缓存雪崩的系统及方法 |
-
2019
- 2019-12-02 CN CN201911215940.1A patent/CN111026985A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120047577A1 (en) * | 2010-08-23 | 2012-02-23 | Microsoft Corporation | Safe url shortening |
CN106933854A (zh) * | 2015-12-30 | 2017-07-07 | 阿里巴巴集团控股有限公司 | 短链接处理方法、装置及服务器 |
CN106210161A (zh) * | 2016-06-24 | 2016-12-07 | 中国银联股份有限公司 | 一种短链接生成方法及系统 |
CN106886568A (zh) * | 2017-01-12 | 2017-06-23 | 掌阅科技股份有限公司 | 一种分表方法、装置及电子设备 |
CN106817375A (zh) * | 2017-02-07 | 2017-06-09 | 上海斐讯数据通信技术有限公司 | 链接伪装系统及方法 |
CN107729409A (zh) * | 2017-09-26 | 2018-02-23 | 中国银联股份有限公司 | 一种短链接生成方法及装置 |
CN109669960A (zh) * | 2018-12-25 | 2019-04-23 | 钛马信息网络技术有限公司 | 在微服务中通过多级缓存避免缓存雪崩的系统及方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111651695A (zh) * | 2020-05-29 | 2020-09-11 | 深圳前海微众银行股份有限公司 | 一种短链接的生成与解析方法及装置 |
CN114692027A (zh) * | 2020-12-29 | 2022-07-01 | 福建天泉教育科技有限公司 | 一种将短链接还原成长链接的方法与终端 |
CN114692027B (zh) * | 2020-12-29 | 2024-09-20 | 福建天泉教育科技有限公司 | 一种将短链接还原成长链接的方法与终端 |
CN112861032A (zh) * | 2021-01-20 | 2021-05-28 | 银盛通信有限公司 | 一种短链接生成的方法和系统 |
CN113378083A (zh) * | 2021-05-19 | 2021-09-10 | 北京沃东天骏信息技术有限公司 | 一种短链接生成方法、装置、设备及存储介质 |
WO2022242678A1 (zh) * | 2021-05-19 | 2022-11-24 | 北京沃东天骏信息技术有限公司 | 短链接生成方法、装置、设备及存储介质 |
CN113378083B (zh) * | 2021-05-19 | 2023-09-29 | 北京沃东天骏信息技术有限公司 | 一种短链接生成方法、装置、设备及存储介质 |
CN113761406A (zh) * | 2021-09-03 | 2021-12-07 | 深圳市丰巢网络技术有限公司 | 一种智能柜二维码短链生成方法、装置、介质及电子设备 |
CN113761406B (zh) * | 2021-09-03 | 2024-06-04 | 丰巢网络技术有限公司 | 一种智能柜二维码短链生成方法、装置、介质及电子设备 |
CN115587609A (zh) * | 2022-09-27 | 2023-01-10 | 深圳市智码通科技有限公司 | 短链接二维码生成方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111026985A (zh) | 一种短链接生成方法、装置和服务器 | |
US20130141259A1 (en) | Method and system for data compression | |
JP5420087B2 (ja) | ユニバーサルリソースロケータを含むメッセージを提供するための方法およびシステム | |
CN102331985B (zh) | 网页页面的分片嵌套缓存的处理方法和装置 | |
US20110016142A1 (en) | Method and apparatus for creating pattern matching state machine and identifying pattern | |
US20030131266A1 (en) | Generating and maintaining encrypted passwords | |
CN106326475B (zh) | 一种高效的静态哈希表实现方法及系统 | |
CN111553670B (zh) | 一种交易处理方法、装置及计算机可读存储介质 | |
CN109313660A (zh) | 一种生成短网址的方法和终端 | |
CN104486777B (zh) | 一种实现数据处理的方法及装置 | |
CN102915363A (zh) | 网址收藏方法和系统 | |
JP2014515228A (ja) | データ識別子を符号化する方法 | |
CN111723113A (zh) | 业务数据的分布式缓存方法、装置、终端设备及存储介质 | |
CN110716713A (zh) | 一种生成项目代码的方法及计算设备 | |
CN102542019A (zh) | 识别码存储方法及系统、识别码索引方法及系统 | |
CN107736003B (zh) | 用于保护域名安全的方法和设备 | |
KR101587756B1 (ko) | 블룸 필터 선-검색을 이용한 스트링 정보 검색 장치 및 방법 | |
JP6233846B2 (ja) | 可変長ノンスの生成 | |
Zhong et al. | FPGA-CPU Architecture Accelerated Regular Expression Matching With Fast Preprocessing | |
CN115640471A (zh) | 短链接生成方法、装置、计算机设备及存储介质 | |
CN1961269A (zh) | 用于查询受保护的结构化数据的方法和设备 | |
JP2005004560A (ja) | インバーテッドファイル作成方法 | |
JPH11306194A (ja) | 文字列に対するハッシュ値の計算方法およびその方法を実現するプログラムを記録した機械可読な記録媒体 | |
CN113064898A (zh) | 一种基于链上合约微型索引的检索方法、装置和电子设备 | |
CN114499465A (zh) | 散列算法及电路、电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200417 |