redis_rate

Rate limiting for go-redis

Github星跟蹤圖

Rate limiting for go-redis

Build Status
GoDoc

This package is based on rwz/redis-gcra and implements GCRA (aka leaky bucket) for rate limiting based on Redis. The code requires Redis version 3.2 or newer since it relies on replicate_commands feature.

Installation

redus_rate requires a Go version with Modules support and uses import versioning. So please make sure to initialize a Go module before installing redis_rate:

go mod init github.com/my/repo
go get github.com/go-redis/redis_rate/v8

Import:

import "github.com/go-redis/redis_rate/v8"

Example

package redis_rate_test

import (
	"fmt"

	"github.com/go-redis/redis/v7"
	"github.com/go-redis/redis_rate/v8"
)

func ExampleNewLimiter() {
	rdb := redis.NewClient(&redis.Options{
		Addr: "localhost:6379",
	})
	_ = rdb.FlushDB().Err()

	limiter := redis_rate.NewLimiter(rdb)
	res, err := limiter.Allow("project:123", redis_rate.PerSecond(10))
	if err != nil {
		panic(err)
	}
	fmt.Println(res.Allowed, res.Remaining)
	// Output: true 9
}

主要指標

概覽
名稱與所有者go-redis/redis_rate
主編程語言Go
編程語言Go (語言數: 2)
平台
許可證BSD 2-Clause "Simplified" License
所有者活动
創建於2015-12-15 09:29:52
推送於2025-04-30 16:29:10
最后一次提交
發布數27
最新版本名稱v10.0.1 (發布於 )
第一版名稱v1.0.0 (發布於 )
用户参与
星數0.9k
關注者數12
派生數104
提交數85
已啟用問題?
問題數46
打開的問題數27
拉請求數26
打開的拉請求數11
關閉的拉請求數28
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?