Skip to content

Repository files navigation

RateLimiterLib

.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.csservices.AddRateLimiter(options =>{options.RateLimit=100;// requestsoptions.WindowSizeSeconds=60;// per minuteoptions.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

varlimiter=newRateLimiter(newTokenBucketStrategy(100,TimeSpan.FromMinutes(1)));if(!limiter.IsRequestAllowed(userId)){returnStatusCode(429,"Too many requests");}

With Redis (Distributed)

varredisLimiter=newRedisRateLimiter(redisConnection,newTokenBucketStrategy(1000,TimeSpan.FromMinutes(1)));

Custom Policies

varpolicies=newRateLimitPolicies{{"PublicAPI",newRateLimitPolicy{Requests=100,WindowSeconds=60}},{"AuthenticatedAPI",newRateLimitPolicy{Requests=1000,WindowSeconds=60}},{"AdminAPI",newRateLimitPolicy{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

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

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages