1.3 KiB
1.3 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
项目概述
基于 Redis 的分布式锁实现(Go)。使用 Redis SETNX + Lua 脚本保证原子性,支持锁获取、释放、续期和重试。
常用命令
# 构建
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:重构