接口限流
youlai-gin 内置基于 Redis 的 IP 限流中间件,用于防止恶意请求和系统过载。
使用方式
1. 全局限流
go
// main.go
import "youlai-gin/internal/middleware"
func main() {
r := gin.New()
// 全局限流:默认 10 req/s(实现见 internal/middleware/rate_limiter.go)
r.Use(middleware.RateLimitByIP())
r.Run(":8080")
}限流规则
- 计数窗口:1 秒
- 阈值:默认每个 IP 10 次/秒
- 实现方式:
INCR+EXPIRE,Redis 异常时自动放行避免影响可用性 - 错误码:超限返回 HTTP
429
相关实现
internal/middleware/rate_limiter.go
