Documentation
¶
Index ¶
- type ConcurrencyLimiter
- type QPMLimiter
- type RedisLRAgent
- func (agent *RedisLRAgent) CheckAndConsumeToken(key string, tpmThreshold int64, windowSizeSec int64, bucketPeakLimit int64, ...) (currentTime int64, isBucketAllowed bool, isWholeAllowed bool, ...)
- func (agent *RedisLRAgent) ConAcquire(key string, conThreshold int64, ttl int64) (currentTime int64, isAllowed bool, curCount int64, err error)
- func (agent *RedisLRAgent) ConRelease(key string, ttl int64) (curCount int64, err error)
- func (agent *RedisLRAgent) QpmCheck(key string, burst int64, period int64, limit int64, expectUse int64) (currentTime int64, isAllowed bool, tat float64, err error)
- func (agent *RedisLRAgent) UpdateConsumeToken(key string, bucketTime int64, bucketSizeSec int64, tokensToConsume int64) (newBucketValue int64, err error)
- type TPMLimiter
- func (l *TPMLimiter) TryCheck(tokensToConsume int64, agent *RedisLRAgent) (bool, int64, int64, error)
- func (l *TPMLimiter) UpdateArgs(maxTokensPerWindow int64, windowSizeSec int64, maxTokensPerBucket int64, ...)
- func (l *TPMLimiter) UpdateTokenUsage(bucketTime int64, tokensConsumeDelta int64, agent *RedisLRAgent) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ConcurrencyLimiter ¶
type ConcurrencyLimiter struct {
// contains filtered or unexported fields
}
func NewConcurrencyLimiter ¶
func NewConcurrencyLimiter(redisKey string, connThreshold int64, ttl int64) *ConcurrencyLimiter
func (*ConcurrencyLimiter) ConnAcquire ¶
func (l *ConcurrencyLimiter) ConnAcquire(agent *RedisLRAgent) (bool, int64, int64, error)
func (*ConcurrencyLimiter) ConnRelease ¶
func (l *ConcurrencyLimiter) ConnRelease(agent *RedisLRAgent) (int64, error)
func (*ConcurrencyLimiter) UpdateArgs ¶
func (l *ConcurrencyLimiter) UpdateArgs(connThreshold int64)
type QPMLimiter ¶
type QPMLimiter struct {
// contains filtered or unexported fields
}
func NewQPMLimiter ¶
func NewQPMLimiter(redisKey string, burst int64, period int64, limit int64) *QPMLimiter
func (*QPMLimiter) Check ¶
func (l *QPMLimiter) Check(reqToConsume int64, agent *RedisLRAgent) (bool, int64, float64, error)
func (*QPMLimiter) UpdateArgs ¶
func (l *QPMLimiter) UpdateArgs(burst int64, period int64, limit int64)
type RedisLRAgent ¶
type RedisLRAgent struct {
// contains filtered or unexported fields
}
func NewRedisLRAgent ¶
func NewRedisLRAgent(redisClient redis_client.Client) *RedisLRAgent
func (*RedisLRAgent) CheckAndConsumeToken ¶
func (agent *RedisLRAgent) CheckAndConsumeToken( key string, tpmThreshold int64, windowSizeSec int64, bucketPeakLimit int64, bucketSizeSec int64, tokensToConsume int64, ) (currentTime int64, isBucketAllowed bool, isWholeAllowed bool, currentBucketRemaining int64, totalRemaining int64, isFinalAllowed bool, err error)
func (*RedisLRAgent) ConAcquire ¶
func (*RedisLRAgent) ConRelease ¶
func (agent *RedisLRAgent) ConRelease( key string, ttl int64, ) (curCount int64, err error)
func (*RedisLRAgent) UpdateConsumeToken ¶
type TPMLimiter ¶
type TPMLimiter struct {
// contains filtered or unexported fields
}
each Window can seperate into buckets bucketcount == windowSizeSec/bucketSizeSec require: windowSizeSec % bucketSizeSec == 0
func NewTPMLimiter ¶
func (*TPMLimiter) TryCheck ¶
func (l *TPMLimiter) TryCheck(tokensToConsume int64, agent *RedisLRAgent) (bool, int64, int64, error)
func (*TPMLimiter) UpdateArgs ¶
func (l *TPMLimiter) UpdateArgs(maxTokensPerWindow int64, windowSizeSec int64, maxTokensPerBucket int64, bucketSizeSec int64)
func (*TPMLimiter) UpdateTokenUsage ¶
func (l *TPMLimiter) UpdateTokenUsage(bucketTime int64, tokensConsumeDelta int64, agent *RedisLRAgent) error
Click to show internal directories.
Click to hide internal directories.