limiter

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: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Limiter

type Limiter interface {
	// Limit 限制、限流,是否触发限流。
	// 返回True就是触发限流。
	Limit(ctx context.Context, key string) (bool, error)
}

type RedisSlideWindowKLimiter

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

RedisSlideWindowKLimiter Redis滑动窗口限流器

func NewRedisSlideWindowKLimiter

func NewRedisSlideWindowKLimiter(cmd redis.Cmdable, interval time.Duration, rate int) *RedisSlideWindowKLimiter

NewRedisSlideWindowKLimiter 创建一个Redis滑动窗口限流器

  • cmd: redis命令接口(如redis.Client)
  • interval: 窗口大小(例如time.Second,表示每秒最多允许rate个请求)
  • rate: 阈值,窗口内允许的最大请求数

func NewRedisSlideWindowKLimiterWithPrefix

func NewRedisSlideWindowKLimiterWithPrefix(cmd redis.Cmdable, prefix string, interval time.Duration, rate int) *RedisSlideWindowKLimiter

NewRedisSlideWindowKLimiterWithPrefix 创建带自定义前缀的Redis滑动窗口限流器

func (*RedisSlideWindowKLimiter) GetConfig

func (b *RedisSlideWindowKLimiter) GetConfig() (time.Duration, int)

GetConfig 获取限流器配置

func (*RedisSlideWindowKLimiter) GetPrefix

func (b *RedisSlideWindowKLimiter) GetPrefix() string

GetPrefix 获取Redis key前缀

func (*RedisSlideWindowKLimiter) Limit

func (b *RedisSlideWindowKLimiter) Limit(ctx context.Context, key string) (bool, error)

Limit 检查是否触发限流(使用自动生成的请求ID)

  • key: 限流的业务key
  • 返回值:true表示触发限流,false表示通过
  • 错误:Redis操作错误

func (*RedisSlideWindowKLimiter) LimitWithCustomKey

func (b *RedisSlideWindowKLimiter) LimitWithCustomKey(ctx context.Context, fullKey string) (bool, error)

LimitWithCustomKey 使用自定义完整key进行检查(不添加前缀)

func (*RedisSlideWindowKLimiter) LimitWithCustomKeyAndRequestID

func (b *RedisSlideWindowKLimiter) LimitWithCustomKeyAndRequestID(ctx context.Context, fullKey, requestID string) (bool, error)

LimitWithCustomKeyAndRequestID 使用自定义完整key和请求ID进行检查

func (*RedisSlideWindowKLimiter) LimitWithRequestID

func (b *RedisSlideWindowKLimiter) LimitWithRequestID(ctx context.Context, key, requestID string) (bool, error)

LimitWithRequestID 检查是否触发限流(使用指定的请求ID)

  • key: 限流的业务key
  • requestID: 唯一请求标识符,用于Lua脚本的member生成
  • 返回值:true表示触发限流,false表示通过
  • 错误:Redis操作错误

func (*RedisSlideWindowKLimiter) SetPrefix

func (b *RedisSlideWindowKLimiter) SetPrefix(prefix string)

SetPrefix 设置Redis key前缀

Directories

Path Synopsis
Package limitermocks is a generated GoMock package.
Package limitermocks is a generated GoMock package.

Jump to

Keyboard shortcuts

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