Production-ready .NET library for API Rate Limiting with Redis support for distributed systems, configurable limits and policies, and extensible architecture for custom implementations.
- 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
dotnet add package RateLimiterLibAdd 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();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
var limiter = new RateLimiter(
new TokenBucketStrategy(100, TimeSpan.FromMinutes(1))
);
if (!limiter.IsRequestAllowed(userId))
{
return StatusCode(429, "Too many requests");
}var redisLimiter = new RedisRateLimiter(
redisConnection,
new TokenBucketStrategy(1000, TimeSpan.FromMinutes(1))
);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 } }
};- .NET Core - Cross-platform framework
- C# - Modern programming language
- Redis - Distributed caching
- ASP.NET Core - Web framework integration
- .NET Core 3.1 or higher
- Redis (for distributed rate limiting)
- ASP.NET Core 3.1 or higher
Contributions are welcome! Please feel free to submit pull requests or open issues for bugs and feature requests.
Created by: @asperger99