由go-zero和GORM框架开发,基于MySQL自增主键实现发号器,通过62进制编码生成短链接
- 通过REPLACE命令更新发号器表,只需存储一条记录即可获取自增主键
REPLACE INTO sequence (stub) VALUES ('a');
SELECT LAST_INSERT_ID();
- 通过62进制编码生成短链接,打乱字符顺序提高随机性和安全性
- 使用redis缓存短链接,提高访问速度
- 转链前会对链接探活,避免生成无效短链接
- 转链前会查询长链接是否已经生成过短链接,避免重复生成
- 转链前会查询是否为短链接,避免重复转链
- 转链时会对链接进行黑名单过滤,避免生成非法短链接
- ⻓链接数据量⼤不适合建索引,所以这⾥使⽤其md5值来做索引,并通过软删除来标记删除数据。
go build && ./shorturl