龙空技术网

57挑战之54,实现一个url 跳转服务(一)

飞霜luke 241

前言:

目前同学们对“url 跳转”都比较看重,咱们都需要了解一些“url 跳转”的相关知识。那么小编在网络上收集了一些关于“url 跳转””的相关文章,希望大家能喜欢,同学们一起来了解一下吧!

不容易,终于到54题了。

理解题目首先成功了一半,

写一个web 应用,允许用户输入一个长URL,转化这个长的URL到一个短的URL,和类似。

1)程序应该有表格,能接收长URL

2)程序应产生一个短的本地url比如/abc1234,然后把短URL和长URL存储在一起,放在一个持久的数仓里。

3)当短URL被键入,程序应该重定向用户到长URL。

4)程序应该能追踪短链接被访问的次数。

5)程序应该有一个统计页面,针对短的URL,比如/abc1234/stats,访问这个URL应该可以展示短url,长URL,以及短URL被访问的次数。

限制:

此应用必须放在持久存储层,其它用户可以使用,这意味着内存型系统不合适。别让无效URL被填入表格。

挑战能力:

查询重复的URL,别创造重复的短URL,当已经存在一个短URL的时候。使用Redis作为数据存储。使用RavenDB作为数据存储。记录每次短URL被输入的时间,使用一个library来把请求视图化。

基于上面的请求,做一个相对应的理解。

1.表格接受长URL,监测长URL是否有效,如果有效则存储到redis.

需要做一个函数,检查URL是否有效,如果get 返参200 则url 有效。

2.持久数仓 放redis, key和value 。都可以用URL来做。3.使用http.server里面的 301 redirect 方案,send.header('location',new_path)方式来实现。4.做一个单独表,基于短链做计数器。挑战要求里面,需要判断短url 不要重复,可以用redis的key逻辑 来避免重复。挑战要求里面,需要做一个机制,保障每次随机产生的短链不要重复。(序列+随机生产方式来实现)挑战要求里面要求做统计:可根据短URL,做一个kv存储,value 里面存储做一个字典(hash方式)记录短URL被访问的次数,以及访问时间等。

明天把设计原型逻辑图画出来。待续。

标签: #url 跳转