一个基于 PythonSqlite 的短网址服务业务逻辑层代码

特点

  1. 精简
  2. 安全(不会出现网址被覆盖错误)
  3. 高效:在保证安全的前提下写入速度稳定在 1k条/1.7s 保证日常使用
  4. 大容量:初始配置下(网址调配比=0.5)最多能插入2k万余条网址
  5. 可拓展

使用

代码包括两个主要文件: 实现类 ShortURL.py 以及配置文件 config.json。首先先来看看配置文件

{
  "config": {
    "blacklist": [
      "baidu.com"
    ],
    "baseURL": "https://cirno.me/",
    "sqliteAddress": "./shortLink.db",
    "shift_possibility": 0.5,
    "support_url_pattern": "http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+"
  },
  "count": 0
}

其中 blackList 为网站黑名单,如果尝试为其中网址服务,程序会返回 ILLEGAL 字符串;
baseURL 为网站根目录,务必注意格式;
SqliteAddress 指向 Sqlite 数据库的位置,首次使用会自己创建;
shift_possibility 指网址调配比,数值越大网址缩短效果越好(体现在更短的网址上),但是可能会造成运行效率的减小,所以得按具体需求来;
support_url_pattern 是检测网址合规的正则表达式,默认匹配带协议前缀的所有合法网址。

配置完成后就能调用 ShortURL.py 进行业务逻辑的实现了,类中主要提供4个公用方法:

import ShortURL
func = ShortURL.ShortURL()

# 缩短网址
result = func.add("https://cirno.me")    

# 数据库内网址总数
print(func.len())

# 原网址和短网址的相互转换(自动检测)
result = func.get("https://cirno.me")

# 关闭会话
func.close()

项目地址

TwinIsland/ShortenURL-model