limitX

package
v2.2.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 10, 2026 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Builder

type Builder struct {
	// contains filtered or unexported fields
}

func NewRedisBuilder

func NewRedisBuilder(l limiter.Limiter, logh logx.Loggerx) *Builder

NewRedisBuilder 【注册到gin中间件, server.use()】 ratelimitx.NewBuilder(limiter.NewRedisSlideWindowKLimiter(redisClient, time.Second, 1000)).Build(), 限流中间件,注册到 gin框架,使用 redis,100次请求/秒。传三个参数,第一个为redis客户端,第二个为限流时间,第三个为限流次数。

func (*Builder) Build

func (b *Builder) Build() gin.HandlerFunc

func (*Builder) Prefix

func (b *Builder) Prefix(prefix string) *Builder

type CounterLimiter

type CounterLimiter struct {
	// contains filtered or unexported fields
}

func NewCounterBuilder

func NewCounterBuilder(threshold int32) *CounterLimiter

NewCounterBuilder 创建计数器限流算法

func (*CounterLimiter) Build

func (c *CounterLimiter) Build() gin.HandlerFunc

Build 计数器限流算法

type FixedWindowLimiter

type FixedWindowLimiter struct {
	// contains filtered or unexported fields
}

FixedWindowLimiter 固定窗口限流算法

func NewFixedWindowBuilder

func NewFixedWindowBuilder(window time.Duration, threshold int) *FixedWindowLimiter

NewFixedWindowBuilder 创建固定窗口限流算法

  • window 窗口大小
  • threshold 阈值

func (*FixedWindowLimiter) Build

func (c *FixedWindowLimiter) Build() gin.HandlerFunc

Build 固定窗口限流算法

type SlidingWindowLimiter

type SlidingWindowLimiter struct {
	// contains filtered or unexported fields
}

SlidingWindowLimiter 滑动窗口限流器

func NewSlidingWindowBuilder

func NewSlidingWindowBuilder(window time.Duration, threshold int) *SlidingWindowLimiter

NewSlidingWindowBuilder 滑动窗口限流器, 构造函数

  • window: 窗口时长(如time.Second)
  • threshold: 窗口内最大请求数(如100)

每1秒最多有100个请求/秒,即1秒内最多100个请求

func (*SlidingWindowLimiter) Allow

func (c *SlidingWindowLimiter) Allow() bool

Allow

  • 检查是否允许通过请求
  • 判断是否允许当前请求(核心逻辑)

func (*SlidingWindowLimiter) Build

func (*SlidingWindowLimiter) GetCurrentCount

func (c *SlidingWindowLimiter) GetCurrentCount() int

GetCurrentCount 获取当前队列长度(主要用于测试)

type TokenBucketLimiter

type TokenBucketLimiter struct {
	// contains filtered or unexported fields
}

TokenBucketLimiter 令牌桶限流算法

func NewTokenBucketBuilder

func NewTokenBucketBuilder(interval time.Duration, capacity int) *TokenBucketLimiter

NewTokenBucketBuilder 创建令牌桶限流算法

  • interval 令牌产生时间间隔
  • capacity 令牌桶容量

func (*TokenBucketLimiter) Build

func (c *TokenBucketLimiter) Build() gin.HandlerFunc

Build 令牌桶限流算法

func (*TokenBucketLimiter) Close

func (c *TokenBucketLimiter) Close() error

Close 关闭限流器,释放资源

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL