Documentation
¶
Index ¶
- type Limiter
- type RedisSlideWindowKLimiter
- func (b *RedisSlideWindowKLimiter) GetConfig() (time.Duration, int)
- func (b *RedisSlideWindowKLimiter) GetPrefix() string
- func (b *RedisSlideWindowKLimiter) Limit(ctx context.Context, key string) (bool, error)
- func (b *RedisSlideWindowKLimiter) LimitWithCustomKey(ctx context.Context, fullKey string) (bool, error)
- func (b *RedisSlideWindowKLimiter) LimitWithCustomKeyAndRequestID(ctx context.Context, fullKey, requestID string) (bool, error)
- func (b *RedisSlideWindowKLimiter) LimitWithRequestID(ctx context.Context, key, requestID string) (bool, error)
- func (b *RedisSlideWindowKLimiter) SetPrefix(prefix string)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
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 ¶
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前缀
Click to show internal directories.
Click to hide internal directories.