speedbump

A Redis-backed rate limiter in Go

Github星跟蹤圖

speedbump GoDoc

A Redis-backed Rate Limiter for Go

wercker status

Cool stuff

  • Backed by Redis, so it keeps track of requests across a cluster
  • Extensible timing functions. Includes defaults for tracking requests per
    second, minute, and hour
  • Works with IPv4, IPv6, or any other unique identifier
  • Example middleware included for Gin (See: ginbump) and
    Negroni (See:
    negronibump)

Versions, Branch, Go Get Command, Client Version, -, ---, ---, ---, ---, v2, go get gopkg.in/etcinit/speedbump.v2, gopkg.in/redis.v5, Link, v1, master, go get gopkg.in/etcinit/speedbump.v1, gopkg.in/redis.v3, Link, v0, go get gopkg.in/etcinit/speedbump.v0, gopkg.in/redis.v2, Link, ## Usage

  • Get a working Redis server
  • Go get:
$ go get github.com/etcinit/speedbump
  • Include it in your code
package main

import (
	"fmt"
	"time"

	"github.com/etcinit/speedbump"
	"gopkg.in/redis.v5"
)

func main() {
	client := redis.NewClient(&redis.Options{
		Addr:     "localhost:6379",
		Password: "",
		DB:       0,
	})
	hasher := speedbump.PerSecondHasher{}

	// Here we create a limiter that will only allow 5 requests per second
	limiter := speedbump.NewLimiter(client, hasher, 5)

	for {
		// This example has a hardcoded IP, but you would replace it with the IP
		// of a client on a real case.
		success, err := limiter.Attempt("127.0.0.1")

		if err != nil {
			panic(err)
		}

		if success {
			fmt.Println("Successful!")
		} else {
			fmt.Println("Limited! :(")
		}

		time.Sleep(time.Millisecond * time.Duration(100))
	}
}
  • Output:
Successful!
Successful!
Successful!
Successful!
Successful!
Successful!
Limited! :(
Limited! :(
Limited! :(
Limited! :(
Limited! :(
Successful!
Successful!
Successful!
Successful!
Successful!
Successful!
Limited! :(
Limited! :(
Limited! :(
Limited! :(
Successful!
Successful!
...

主要指標

概覽
名稱與所有者etcinit/speedbump
主編程語言Go
編程語言Go (語言數: 1)
平台
許可證MIT License
所有者活动
創建於2015-04-18 22:47:36
推送於2022-03-28 19:17:09
最后一次提交2016-07-26 21:47:23
發布數5
最新版本名稱v2.0.0 (發布於 )
第一版名稱v0.1.0 (發布於 )
用户参与
星數116
關注者數6
派生數10
提交數33
已啟用問題?
問題數1
打開的問題數1
拉請求數7
打開的拉請求數2
關閉的拉請求數1
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?