public static Increment ( string key, System.TimeSpan spanSize, System.TimeSpan bucketSize, long throttle, int increment = 1 ) : StackExchange.Redis.RedisResult | ||
key | string | The key where the rate limiter exists. |
spanSize | System.TimeSpan | The full span of time being rate limited. |
bucketSize | System.TimeSpan | The period of time that each bucket should track. |
throttle | long | The total throttling size. |
increment | int | How much to increment by. |
return | StackExchange.Redis.RedisResult |
public static RedisResult Increment(
string key,
TimeSpan spanSize,
TimeSpan bucketSize,
long throttle,
int increment = 1)
{
RedisKey[] keyArgs = { key };
RedisValue[] valueArgs =
{
DateTime.UtcNow.Ticks / TimeSpan.TicksPerMillisecond, (long)spanSize.TotalMilliseconds,
(long)bucketSize.TotalMilliseconds, increment, throttle
};
RedisResult result = SharedCache.Instance.GetWriteConnection(key)
.GetDatabase(SharedCache.Instance.Db)
.ScriptEvaluate(RateLimiter.RateLimitIncrementHash, keyArgs, valueArgs);
return result;
}