mirror of
https://github.com/warmbly/warmbly.git
synced 2026-08-20 00:01:21 +00:00
24 lines
368 B
Go
24 lines
368 B
Go
package climit
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/redis/go-redis/v9"
|
|
)
|
|
|
|
func Limit(ctx context.Context, r *redis.Client, key string, ttl time.Duration) (int64, error) {
|
|
val, err := r.Incr(ctx, key).Result()
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
if val == 1 {
|
|
if err := r.Expire(ctx, key, ttl).Err(); err != nil {
|
|
return 0, err
|
|
}
|
|
}
|
|
|
|
return val, nil
|
|
}
|