初始模型:

短链接系统最基础就是:长链接 → 生成唯一短码 → 保存 短码 -> 原始 URL 映射 → 用户访问短链 → 查询映射 → 302 重定向到原链接。

  • 短码生成:既要短,又不能重复 →
    • 方案一:自增 ID + Base62,简单高效但容易被猜
    • 方案二:随机 Base62 + 唯一性校验,不可预测但要处理冲突和重试
  • 映射存储:需要长期保存短码和原始链接关系 → 存数据库
  • Redis 缓存:短链访问通常读多写少,而且热门链接访问频繁 → 把热点映射缓存到 Redis,提高查询速度
  • 302 重定向:希望后续还能统计、修改目标地址或控制过期 → 使用临时重定向,而不是让浏览器长期缓存
  • 过期机制:有些短链只在一定时间内有效 → 数据库和缓存中保存过期时间,访问时判断是否失效
  • 缓存一致性:原链接允许修改时,缓存可能还是旧值 → 修改数据库后同步删除或更新 Redis
  • 热点保护:极热门短链可能形成热 Key → 必要时加本地缓存、多副本读等手段
  • 统计功能:需要记录点击量、来源等 → 跳转主链路尽量只负责转发,统计异步处理
  • 防滥用:短链可能被用于恶意跳转或批量创建 → URL 校验、黑名单、创建限流等

最后主线可以记成:

生成唯一短码 → DB 存映射 → Redis 加速 → 302 跳转 → 过期控制 → 再补统计、风控和热点保护。