Skip to content

Latest commit

 

History

History
65 lines (56 loc) · 1.79 KB

README.md

File metadata and controls

65 lines (56 loc) · 1.79 KB

go-cqhttp

_✨ 一个基于GinRedis实现的短链跳转程序

license GoReportCard

项目截图

实现细节

URL加密

  • 如果用户自行提供了Slug,则使用用户的Slug
  • 实现方法是基于unix时间戳转62进制生成字符串,保证不重复
  • func Base62(url string) string {
      id := time.Now().Unix()
      var baseChars = []byte("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
      var result []byte
      for id > 0 {
      	idx := id % 62
      	result = append([]byte{baseChars[idx]}, result...)
      	id /= 62
      }
      return string(result)
    }

redis

  • 实现了简单的SET GET Exists 操作

使用方法

  1. config.yaml 填写好配置
config: # 系统配置
  base_url: 127.0.0.1:8000/api/ # 跳转的链接
  port: :8000 # gin运行端口
redis: # redis配置
  Addr: 127.0.0.1:6379 #redis地址
  Passwd: # 密码
  DB: 0 # 链接的数据库
  CacheDuration: "4380h" #设置超时, 以小时为单位
  1. go buildgo run .
  2. 执行
  3. 打开127.0.0.1:{your_port} 查看服务

常见问题

  • Q:为什么运行不起来
    • A: 检查下端口有没有被占用或者redis配置是否成功

TODO

  • 使用redis缓存
  • Goroutine 优化性能
  • 分布式处理架构
  • 增加后台可视化