Skip to content
This repository has been archived by the owner on Jul 6, 2022. It is now read-only.

streamrail/redis-ratelimit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

redis-ratelimit (WIP)

Summary

Simple rate limiter for your golang app. Basically code extraction from ratelimitd to allow usage inside custom golang apps, not as a daemon.

Usage

package api

import (
	"flag"
	ratelimit "github.com/streamrail/redis-ratelimit"
	"net/http"
	"time"
)

var (
	redisHost         = flag.String("ratelimit_redis", "localhost:6379", "Redis host and port. Eg: localhost:6379")
	redisConnPoolSize = flag.Int("ratelimit_redisConnPoolSize", 5, "Redis connection pool size. Default: 5")
	redisPrefix       = flag.String("ratelimit_redisPrefix", "rl_", "Redis prefix to attach to keys")

	ipRateLimiter     = ratelimit.NewRatelimit(1, 10*time.Second, *redisHost, *redisConnPoolSize, *redisPrefix)
)

func init() {
	ipRateLimiter.Start()
}

func GetApiResponse(w http.ResponseWriter, key string, r *http.Request) []byte {
	if _, err := ipRateLimiter.Incr(util.GetIP(r)); err != nil {
		w.WriteHeader(http.StatusBadRequest)
		return []byte(err.Error())
	} 
...
...
...

TODO

  • add tests
  • create examples

License

Original license included, plus additional MIT license we added

About

rate limiting with redis for your golang app

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages