Skip to content

asperger99/RateLimiterLib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RateLimiterLib

Production-ready .NET library for API Rate Limiting with Redis support for distributed systems, configurable limits and policies, and extensible architecture for custom implementations.

Features

  • Redis Support - Distributed rate limiting for multi-instance deployments
  • Configurable Limits & Policies - Flexible configuration for different rate limiting scenarios
  • Multiple Strategies - Token Bucket, Sliding Window, and custom implementations
  • ASP.NET Core Middleware - Seamless integration with web applications
  • Extensible Architecture - Easy to add custom rate limiting strategies
  • Production-Ready - Built for enterprise applications

Installation

dotnet add package RateLimiterLib

Quick Start

Add to your ASP.NET Core application:

// Program.cs or Startup.cs
services.AddRateLimiter(options => {
    options.RateLimit = 100;           // requests
    options.WindowSizeSeconds = 60;     // per minute
    options.UseRedis = true;            // for distributed systems
});

app.UseRateLimitMiddleware();

Architecture

src/RateLimiter/
├── RateLimitStrategies/     # Token Bucket, Sliding Window implementations
├── Middleware/              # ASP.NET Core middleware integration
├── Factories/               # Strategy factory patterns
├── Interfaces/              # Core abstractions
├── Models/                  # Data structures
├── Redis/                   # Distributed caching support
├── Extensions/              # Helper methods
└── Utils/                   # Utility functions

Usage Examples

Basic Rate Limiting

var limiter = new RateLimiter(
    new TokenBucketStrategy(100, TimeSpan.FromMinutes(1))
);

if (!limiter.IsRequestAllowed(userId))
{
    return StatusCode(429, "Too many requests");
}

With Redis (Distributed)

var redisLimiter = new RedisRateLimiter(
    redisConnection,
    new TokenBucketStrategy(1000, TimeSpan.FromMinutes(1))
);

Custom Policies

var policies = new RateLimitPolicies
{
    { "PublicAPI", new RateLimitPolicy { Requests = 100, WindowSeconds = 60 } },
    { "AuthenticatedAPI", new RateLimitPolicy { Requests = 1000, WindowSeconds = 60 } },
    { "AdminAPI", new RateLimitPolicy { Requests = 10000, WindowSeconds = 60 } }
};

Technologies

  • .NET Core - Cross-platform framework
  • C# - Modern programming language
  • Redis - Distributed caching
  • ASP.NET Core - Web framework integration

Requirements

  • .NET Core 3.1 or higher
  • Redis (for distributed rate limiting)
  • ASP.NET Core 3.1 or higher

Contributing

Contributions are welcome! Please feel free to submit pull requests or open issues for bugs and feature requests.

Created by: @asperger99

About

Production-ready .NET library for API Rate Limiting with Redis support for distributed systems, configurable limits and policies, and extensible architecture for custom implementations.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages