Skip to content

Releases: LanceAdd/glimiter

v0.0.1 - Initial Release of GoFrame Rate Limiter

15 Dec 05:18

Choose a tag to compare

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.1

Quick 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