ratelimit

package
v1.0.2 Latest Latest
Warning

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

Go to latest
Published: Mar 6, 2025 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Rule

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

Rule 用户访问控制策略,可由一个或多个访问控制规则组成

func NewRule

func NewRule() *Rule

NewRule 初始化一个多重规则的频率控制策略,例:

r := NewRule()
初始化之后,紧跟着需要调用AddRule方法增加一条或若干条用户访问控制策略,增加用户访问控制策略后,才可以正式使用

func (*Rule) AddRule

func (r *Rule) AddRule(defaultExpiration time.Duration, numberOfAllowedAccesses int, estimatedNumberOfOnlineUserNum ...int) error

AddRule 增加用户访问控制策略,例:

r.AddRule(time.Minute*5, 20)	在5分钟内每个用户最多允许访问20次
r.AddRule(time.Minute*30, 50)	在30分钟内每个用户最多允许访问50次
r.AddRule(time.Hour*24, 200)	在24小时内每个用户最多允许访问200次

其中:
defaultExpiration              表示在某个时间段内
numberOfAllowedAccesses        表示允许访问的次数
estimatedNumberOfOnlineUserNum 表示预计可能有多少人访问,此参数为可变参数,可不填写
以上任何一条用户访问控制策略没通过,都不允许访问,注意单条规则中,不宜设定监控时间段过大的规则,比如设定监控某个用户一个月甚至是1年的访问规则,它会占用大多的内存

func (*Rule) AllowVisit

func (r *Rule) AllowVisit(key interface{}) (bool, error)

AllowVisit 是否还允许某用户访问,如果访问量过多,超出各细分规则中任何一条规则规定的访问量,则不允许访问

无论是否允许访问都会尝试在各细分访问规则记录中增加一条访问日志记录,函数AllowVisit也可以认为
是AddRecords
 例:
 AllowVisit("username")

func (*Rule) ManualEmptyVisitorRecordsOf

func (r *Rule) ManualEmptyVisitorRecordsOf(key interface{}) error

ManualEmptyVisitorRecordsOf 人工清空某用户的访问数据,主要针对某些特定客户的个性化需求,比如某个客户要求临时允许其访问更多的页面,

此时,调用出函数,清空其历史访问数据,间接实现这个目的,例:ManualEmptyVisitorRecordsOf("andyyu")

func (*Rule) PrintRemainingVisits

func (r *Rule) PrintRemainingVisits(key interface{}, language ...int)

PrintRemainingVisits 打印各细分规则下的剩余访问次数

func (*Rule) RemainingVisits

func (r *Rule) RemainingVisits(key interface{}) []int

RemainingVisits 某用户剩余访问次数,例:RemainingVisits("username")

Jump to

Keyboard shortcuts

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