摘要:实现发号器使用的函数个字符作为进制符号转成进制为代码作为发号器生成短网址,假如域名为通过解码到原本文为原创首发于继续阅读全文
描述
如何将长地址URL转换为短地址URL,一个比较理想的解决方案就是使用发号器生成一个唯一的整数ID,然后转换为62进制,作为短地址URL。
实现发号器使用 Redis 的 incr 函数 incr("SID")
// 62个字符作为62进制符号 0123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ-_ 12345678 转成 62 进制为 RPGS代码
# python import redis class ShortenURL: _alphabet = "0123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ-_" _base = len(_alphabet) def encode(self, number): string = "" while(number > 0): string = self._alphabet[number % self._base] + string number //= self._base return string def decode(self, string): number = 0 for char in string: number = number * self._base + self._alphabet.index(char) return number t = ShortenURL() # Redis 作为ID发号器 r = redis.StrictRedis(host="127.0.0.1", port=6379, db=0,password="hooyes") if r.exists("SID") != 1: r.set("SID",12345677) r.incr("SID") sid = int(r.get("SID")) # 生成短网址,假如域名为 85.si sn = t.encode(sid) shorturl = "https://85.si/" + sn print(shorturl) # 通过 ShortURL SN 解码到原SID print(t.decode(sn))
本文为hooyes原创首发于 hooyes.net
继续阅读全文
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/41593.html
摘要:为什么需要发号器在分布式系统中,经常需要对大量的数据消息请求等进行唯一标识,例如对于分布式系统,服务间相互调用需要唯一标识,调用链路分析,日志追踪的时候需要使用这个唯一标识。 原文链接:何晓东 博客 文章起源于 康神交流群的 panda大佬和boss li关于发号器的一些交流,特此感谢让我们学到了新知识。 为什么需要发号器 在分布式系统中,经常需要对大量的数据、消息、http 请求等进...
阅读 932·2021-11-24 09:39
阅读 2663·2021-09-26 09:55
阅读 10958·2021-08-23 09:47
阅读 3525·2019-08-30 15:52
阅读 831·2019-08-29 13:49
阅读 973·2019-08-23 18:00
阅读 825·2019-08-23 16:42
阅读 1591·2019-08-23 14:28