基於Redis作為發號器生成短網址Python實踐

受到難受發表於2020-05-12
請尊重原創,本文原文地址:

描述

如何將長地址URL轉換為短地址URL,一個比較理想的解決方案就是使用發號器生成一個唯一的整數ID(這唯一ID與長網址一一對應),然後轉換為62進位制,作為短地址URL。

實現

發號器使用 Redis 的 incr 函式 incr('SID')
// 62個字元作為62進位制符號 0123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ-_ 12345678 轉成 62 進製為 RPGS

程式碼

# python 
import redisclass 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 numbert = 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 = '
print(shorturl)
# 透過 ShortURL SN 解碼到原SID
print(t.decode(sn))

測試

執行 python redis-short.py 即可以測試。 //注意需要具備 redis

以上程式碼已放到Hooyes的Github上開源,歡迎Fork或提建議。

相關推薦

完結撒花


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69966888/viewspace-2691660/,如需轉載,請註明出處,否則將追究法律責任。

相關文章