基于 Go + Gin + BadgerDB 构建的高性能图片存储服务,支持异步写入、滑动过期、资源限制与 LRU 自动清理。
- 极速响应:采用异步队列(Go Channel + Worker)处理上传,请求秒回。
- 智能清理:
- 滑动过期 (TTL Reset):图片被获取 (GET) 时自动重置保留期,确保热点数据不被清理。
- 存储限制 (LRU):支持设置存储上限(默认 20G),超标时自动删除最旧数据。
- 内存控制:硬限制内存占用,防止 OOM。
- 项目维度管理:支持按项目 (project) 批量删除图片。
- 容器化:原生支持 Docker & Docker Compose,多平台编译。
确保已安装 Docker 和 Docker Compose。
# 复制配置模板
cp .env.example .env
# 启动服务
docker-compose up -d --build服务默认监听宿主机 8882 端口。
如果您需要打包镜像或导出包:
./build.sh产物将生成在 bin/ 目录下(包括 .tar.gz 镜像包和本地二进制文件)。
| 参数 | 说明 | 默认值 |
|---|---|---|
PORT |
服务监听端口 | 8080 |
DB_PATH |
数据存储路径 | ./data |
IMAGE_TTL |
图片保留期 (Go duration 格式) | 672h (28天) |
MAX_MEMORY_MB |
最大内存占用 (MB) | 1024 |
MAX_STORAGE_GB |
最大存储占用 (GB) | 20 |
AUTO_RESET_TTL |
GET 时是否刷新 TTL | true |
详细接口说明请参考代码中 handlers/ 逻辑,支持以下操作:
POST /upload: 单张图片上传(异步)。POST /upload/batch: 批量上传。GET /image/:name: 获取图片 Base64。POST /delete: 按名称或项目清理数据。
src/: Go 源代码。bin/: 构建产物。docs/: 设计方案与计划文档。