redis_rate

Rate limiting for go-redis

Github stars Tracking Chart

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
}

Main metrics

Overview
Name With Ownergo-redis/redis_rate
Primary LanguageGo
Program languageGo (Language Count: 2)
Platform
License:BSD 2-Clause "Simplified" License
所有者活动
Created At2015-12-15 09:29:52
Pushed At2025-04-30 16:29:10
Last Commit At
Release Count27
Last Release Namev10.0.1 (Posted on )
First Release Namev1.0.0 (Posted on )
用户参与
Stargazers Count0.9k
Watchers Count12
Fork Count104
Commits Count85
Has Issues Enabled
Issues Count46
Issue Open Count27
Pull Requests Count26
Pull Requests Open Count11
Pull Requests Close Count28
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private