Files
redis-rate-limiter/CLAUDE.md
T

46 lines
1.3 KiB
Markdown
Raw Normal View History

2026-05-29 19:19:14 +08:00
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## 项目概述
基于 Redis 的分布式锁实现(Go)。使用 Redis SETNX + Lua 脚本保证原子性,支持锁获取、释放、续期和重试。
## 常用命令
```bash
# 构建
go build ./...
# 运行所有测试(需要 Redis 连接,配置在 .env)
go test ./... -v -count=1
# 运行单个测试
go test ./lock/ -v -run TestAcquireAndRelease
# 整理依赖
go mod tidy
```
## 架构
- `lock/lock.go` — 核心分布式锁实现,所有关键操作(Release、Refresh)使用 Lua 脚本保证原子性
- `lock/lock_test.go` — 集成测试,依赖真实 Redis 实例,通过 .env 的 REDIS_URL 连接
- `main.go` — 示例入口,演示锁的基本用法
## 关键设计
- **锁安全释放**:Release 使用 Lua 脚本先 GET 校验 owner 再 DEL,防止误释放别人的锁
- **锁续期**:Refresh 同样用 Lua 脚本保证只有持有者能续期
- **TTL 防死锁**:所有锁都有过期时间,即使进程崩溃也不会永久死锁
- **Owner 标识**:每次持锁需要唯一 owner(如 UUID),保证分布式环境下的安全性
## 提交规范
使用 Conventional Commits:
- `feat:` 新功能
- `fix:` 修复
- `test:` 测试相关
- `docs:` 文档
- `refactor:` 重构