2016 - 2024

感恩一路有你

redis数据库备份与恢复命令 有没有免费的短网址工具?

浏览量:1944 时间:2023-06-03 15:53:59 作者:采采

有没有免费的短网址工具?

我是@程序员的小助手。本文从技术的角度,对短网址进行了深度挖掘。

前言网上已经有产品了,用起来还不错。但是,作为一个程序员,从零开始造轮子,开发一个属于自己的短URL服务器,是很了不起的!

通过本文,读者可以了解短URL的技术原理,并通过Go语言实现一个短URL服务。

简明教程的短URL为什么会存在?

微博等产品的兴起,活跃了网络社交圈的大部分用户。但是微博一般有140字的限制。如果你不 t转发,单纯评论文字,加上网站的一段,极有可能超限被截。

短URL应运而生,用一个更短的字符串代替一个更长的字符串,从观感上来说要友好很多。

从技术上讲,短URL是一个哈希表,用来映射两个字符串之间的对应关系。

使用键,找到对应的值,重定向到access,整个过程就完成了。

短URL算法(Short URL algorithm)短URL的一般结构,如新浪的SwuTjn,后端的一个6位字符串是用来唯一标记一条记录的ID。那么,用什么算法可以生成一个不重复的ID呢?

使用通用方法,使用0-9 A-Z a-z,共62个字符,let 让我们看看使用散列密钥数字有多少排列和组合。

一个位置:62种幂(62,1)

2位数:pow(62,2) 3844种

3位数:pow(62,3) 238328种。

4位数:pow(62,4) 14776336种。

5位数:pow(62,5) 916132832种。

6位数:pow(62,6) 56800235584种。

一般来说,六个字符就够了,有568亿种可能。

还有一种情况,原始URL字符串的MD5值一共32位,然后分成4段,分别按位与,截成30位。每隔5位选取该位的字符作为本段的索引,共6位。但这种做法也有重复的可能,并不直观。

因此,本文采用第一种算法来生成密钥ID。

该工具可以分析短URL的特征,包括以下项目:

惟一性:密钥需要是全局惟一的和时间敏感的:密钥需要有一个截止日期,并且目标URL是惟一的。如果它们是重复的,现有的密钥将自动返回。考虑到以上情况,我们使用redis来存储这些对应关系。Gin框架被用作路由器和控制器来提供外部API访问。

核心函数计算机中常见的二进制、八进制、十进制和十六进制,我们这里需要用62个字符循环表示一个整数,所以可以称之为62。

让 s用go语言实现这个函数,用来把任意整数(uint64)转换成(0-9A-Za-z)的字符串。

需要注意,纪基本方法是循环取余数,根据十进制字典索引对应的字符,然后将余数拼接在一起,就是结果。

这个计算方法和二进制、八进制是一样的。

因为字典很长,有62个键值对,所以我们只列出其中的一部分。

上述函数的转换结果类似于6489264001 75ai0p。

功能规划以下是系统路由、创建短链接、使用短链接访问目标URL的方法。

1-计划工艺路线

路由比较简单,一共两个,一个POST方法,生成短链接;一个是GET方法,它访问短链接。

代码如下:

2-介绍redis并初始化

为了演示方便,我们使用redis存储键值并设置过期时间。我们使用go-redis提供的接口来操作redis数据库。

以下是全局。

对象生成和初始化功能。

这样做的好处是,我们可以使用变量rdb调用方法来全局操作redis键值。

3-实施发布路由方法:添加

这个函数用于接收表单数据,生成一个全局唯一的散列,作为一个键,存储在redis中,设置值和过期时间。

代码如下:

在这一段中,我们使用了一个getCounter函数,它是redis中的一个键集。每次请求创建它时,它都会增加1,以确保没有重复。根据这个计数器,我们称之为助手 s DecToAny方法,并将其转换为62位字符串作为全局唯一的哈希值。

下图是getCounter的定义:

要特别注意助手包,这是我们在 "核心功能和部分。主函数体中的引用。

4-实现GET方法:访问

这个函数主要是利用上一节接口生成的短链接来访问并自动重定向到目标URL。

代码如下:

对于不 t exist,或者redis无法获取,则返回一条错误消息。

如果存在,请使用301 StatusMovedPermanently状态代码重定向到目标地址。

测试我们使用curl工具来测试上面两个接口。

首先,使用POST表单提交数据:

curl-s-X POST-d targ: 9090/

在上面的方法中,我们提交了两个参数。命中路由后,我们将访问上一节第3条中的add方法,并生成一个短链接URL。以JSON格式返回数据,如下所示:

{m:ok,short_url:ech O3-@ . comlocalhost: 9090/75 ai0r,status CHO 8-@ . com 1 }

其中short_url是短url。

接下来,我们使用curl来访问这个链接,看看是否发生了重定向。截图如下:

如您所见,执行了301重定向并给出了目标URL,这与我们在上面的表单中想要创建的地址一致。

最后,故障测试。访问一个不存在的hash,看是否排除了异常信息。截图如下:

如您所见,执行了一条错误返回消息。

以上结论,我们使用GO语言框架Gin实现两条路由,使用r:-)

【本文由@程序员 的助手,并继续分享与编程和程序员 的成长。欢迎关注】

mysql主从和redis主从逻辑一样吗?

不会,mysql的主从复制是从接入点开始的,主机之前的数据不会被从机复制,但是redis从一开始就是备份,主机之前的数据也会被从机获取。

方法 字符串 函数 短URL

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。