feat: add Redis based rate limiting for multiple instances

This commit is contained in:
Jonas Kaninda
2024-11-14 11:38:36 +01:00
parent 3c4920ec9a
commit a874d14194
8 changed files with 112 additions and 27 deletions

View File

@@ -33,6 +33,7 @@ type RateLimiter struct {
mu sync.Mutex
Origins []string
ErrorInterceptor errorinterceptor.ErrorInterceptor
RedisBased bool
}
// Client stores request count and window expiration for each client.
@@ -42,12 +43,13 @@ type Client struct {
}
// NewRateLimiterWindow creates a new RateLimiter.
func NewRateLimiterWindow(requests int, window time.Duration, origin []string) *RateLimiter {
func NewRateLimiterWindow(requests int, window time.Duration, redisBased bool, origin []string) *RateLimiter {
return &RateLimiter{
Requests: requests,
Window: window,
ClientMap: make(map[string]*Client),
Origins: origin,
Requests: requests,
Window: window,
ClientMap: make(map[string]*Client),
Origins: origin,
RedisBased: redisBased,
}
}