Skip to content

JulyFinal/images-store

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Image Store (img_store)

基于 Go + Gin + BadgerDB 构建的高性能图片存储服务,支持异步写入、滑动过期、资源限制与 LRU 自动清理。

核心特性

  • 极速响应:采用异步队列(Go Channel + Worker)处理上传,请求秒回。
  • 智能清理
    • 滑动过期 (TTL Reset):图片被获取 (GET) 时自动重置保留期,确保热点数据不被清理。
    • 存储限制 (LRU):支持设置存储上限(默认 20G),超标时自动删除最旧数据。
    • 内存控制:硬限制内存占用,防止 OOM。
  • 项目维度管理:支持按项目 (project) 批量删除图片。
  • 容器化:原生支持 Docker & Docker Compose,多平台编译。

快速开始

1. 环境准备

确保已安装 Docker 和 Docker Compose。

2. 部署服务

# 复制配置模板
cp .env.example .env

# 启动服务
docker-compose up -d --build

服务默认监听宿主机 8882 端口。

3. 多平台构建 (amd64/arm64)

如果您需要打包镜像或导出包:

./build.sh

产物将生成在 bin/ 目录下(包括 .tar.gz 镜像包和本地二进制文件)。

配置参数 (.env)

参数 说明 默认值
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

API 接口

详细接口说明请参考代码中 handlers/ 逻辑,支持以下操作:

  • POST /upload: 单张图片上传(异步)。
  • POST /upload/batch: 批量上传。
  • GET /image/:name: 获取图片 Base64。
  • POST /delete: 按名称或项目清理数据。

目录结构

  • src/: Go 源代码。
  • bin/: 构建产物。
  • docs/: 设计方案与计划文档。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors