Documentation ¶
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Limiter ¶
type Limiter struct {
// contains filtered or unexported fields
}
Limiter controls how frequently events are allowed to happen.
func NewLimiter ¶
func NewLimiter(rdb rediser) *Limiter
NewLimiter returns a new Limiter.
Example ¶
rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", }) _ = rdb.FlushDB().Err() limiter := redis_rate.NewLimiter(rdb) res, err := limiter.Allow("project:123", redis_rate.PerSecond(10)) if err != nil { panic(err) } fmt.Println(res.Allowed, res.Remaining)
Output: true 9
type Result ¶
type Result struct { // Limit is the limit that was used to obtain this result. Limit *Limit // Allowed reports whether event may happen at time now. Allowed bool // Remaining is the maximum number of requests that could be // permitted instantaneously for this key given the current // state. For example, if a rate limiter allows 10 requests per // second and has already received 6 requests for this key this // second, Remaining would be 4. Remaining int // RetryAfter is the time until the next request will be permitted. // It should be -1 unless the rate limit has been exceeded. RetryAfter time.Duration // ResetAfter is the time until the RateLimiter returns to its // initial state for a given key. For example, if a rate limiter // manages requests per second and received one request 200ms ago, // Reset would return 800ms. You can also think of this as the time // until Limit and Remaining will be equal. ResetAfter time.Duration }
Click to show internal directories.
Click to hide internal directories.