Releases: LanceAdd/glimiter
Releases · LanceAdd/glimiter
v0.0.1 - Initial Release of GoFrame Rate Limiter
GoFrame Rate Limiter v0.0.1
This is the initial release of GoFrame Rate Limiter - a powerful rate limiting library for GoFrame applications.
Features
- Multiple Implementations: Supports both in-memory and Redis-based storage backends
- Sliding Window Algorithm: Redis implementation uses precise sliding window algorithm
- Concurrency Safe: Memory version uses CAS atomic operations, Redis version uses Lua scripts
- Flexible Configuration: Support for custom key generation and error handling
- Standardized: RFC 6585 compliant response headers
- High Performance: Zero overhead for memory version, atomic operations for Redis version
Installation
go get github.com/LanceAdd/glimiter@v0.0.1Quick Start
Create a memory-based rate limiter:
import "github.com/LanceAdd/glimiter"
// Create limiter: 100 requests per minute
limiter := glimiter.NewMemoryLimiter(100, time.Minute)
// Check if request is allowed
allowed, err := limiter.Allow(ctx, "user:123")
if !allowed {
// Request rate limited
}HTTP middleware usage:
s := g.Server()
limiter := glimiter.NewMemoryLimiter(100, time.Minute)
s.Group("/api", func(group *ghttp.RouterGroup) {
group.Middleware(glimiter.MiddlewareByIP(limiter))
group.GET("/users", handler)
})For full documentation, please refer to the README.
Changelog
- Initial release with MemoryLimiter and RedisLimiter implementations
- Full test coverage
- Comprehensive documentation