class RedisStore implements Store

Constants

private FIXED_WINDOW_FUNCTIONS

private SLIDING_WINDOW_FUNCTIONS

private LEAKY_BUCKET_FUNCTIONS

private CONSUME_MANY_SCRIPT

private SCALAR_ADMISSION_SCRIPT

private FIXED_WINDOW_SCRIPT

private SLIDING_WINDOW_SCRIPT

private LEAKY_BUCKET_SCRIPT

private BACKOFF_SCRIPT

private COOLDOWN_SCRIPT

Methods

__construct(Factory $redis, string $connection)

Create a new Redis rate limiter store.

consume(string $key, AdmissionPolicy $policy)

Atomically consume capacity from an admission policy.

array
consumeMany(array $policies)

Consume a group atomically, or inspect then consume on Redis Cluster.

array
consumeManyOnCluster(RedisConnection $connection, array $policies)

Check distributed keys before consuming them individually.

block(string $key, int $durationMicroseconds)

Atomically extend a cooldown block.

inspect(string $key, AdmissionPolicy|Backoff|Cooldown $policy)

Inspect a policy without mutating its state.

recordFailure(string $key, Backoff $backoff)

Record a failure against a backoff policy.

bool
clear(string $key)

Clear the state for a physical limiter key.

executeAdmission(string $key, AdmissionPolicy $policy, string $mode, RedisConnection|null $connection = null)

Execute an admission operation, reusing a held connection for Cluster groups.

array
admissionParameters(AdmissionPolicy $policy)

Return the algorithm, script parameters, and capacity for an admission policy.

executeBackoff(string $key, Backoff $backoff, string $mode)

Execute an exponential-backoff operation.

executeCooldown(string $key, int $durationMicroseconds, string $mode)

Execute a cooldown operation.

mixed
execute(string $script, string $key, array $arguments)

Execute a rate limiter script through Redis's SHA cache.

limitResult(mixed $result, int $expectedLimit)

Convert a Redis tuple to an admission result.

array
integerTuple(mixed $result)

Validate and return a five-integer Redis result tuple.

Details

at line 422
__construct(Factory $redis, string $connection)

Create a new Redis rate limiter store.

Parameters

Factory $redis
string $connection

at line 431
LimitResult consume(string $key, AdmissionPolicy $policy)

Atomically consume capacity from an admission policy.

Parameters

string $key
AdmissionPolicy $policy

Return Value

LimitResult

at line 445
array consumeMany(array $policies)

Consume a group atomically, or inspect then consume on Redis Cluster.

Cluster preflight denials charge nothing. A denial during consumption can leave earlier charges, including when a group repeats a key.

Parameters

array $policies

Return Value

array

at line 495
protected array consumeManyOnCluster(RedisConnection $connection, array $policies)

Check distributed keys before consuming them individually.

Parameters

RedisConnection $connection
array $policies

Return Value

array

at line 516
CooldownResult block(string $key, int $durationMicroseconds)

Atomically extend a cooldown block.

Parameters

string $key
int $durationMicroseconds

Return Value

CooldownResult

at line 526
LimitResult|BackoffResult|CooldownResult inspect(string $key, AdmissionPolicy|Backoff|Cooldown $policy)

Inspect a policy without mutating its state.

Parameters

string $key
AdmissionPolicy|Backoff|Cooldown $policy

Return Value

LimitResult|BackoffResult|CooldownResult

at line 540
BackoffResult recordFailure(string $key, Backoff $backoff)

Record a failure against a backoff policy.

Parameters

string $key
Backoff $backoff

Return Value

BackoffResult

at line 548
bool clear(string $key)

Clear the state for a physical limiter key.

Parameters

string $key

Return Value

bool

at line 559
protected LimitResult executeAdmission(string $key, AdmissionPolicy $policy, string $mode, RedisConnection|null $connection = null)

Execute an admission operation, reusing a held connection for Cluster groups.

Parameters

string $key
AdmissionPolicy $policy
string $mode
RedisConnection|null $connection

Return Value

LimitResult

at line 585
protected array admissionParameters(AdmissionPolicy $policy)

Return the algorithm, script parameters, and capacity for an admission policy.

Parameters

AdmissionPolicy $policy

Return Value

array

at line 604
protected BackoffResult executeBackoff(string $key, Backoff $backoff, string $mode)

Execute an exponential-backoff operation.

Parameters

string $key
Backoff $backoff
string $mode

Return Value

BackoffResult

at line 626
protected CooldownResult executeCooldown(string $key, int $durationMicroseconds, string $mode)

Execute a cooldown operation.

Parameters

string $key
int $durationMicroseconds
string $mode

Return Value

CooldownResult

at line 643
protected mixed execute(string $script, string $key, array $arguments)

Execute a rate limiter script through Redis's SHA cache.

Parameters

string $script
string $key
array $arguments

Return Value

mixed

at line 658
protected LimitResult limitResult(mixed $result, int $expectedLimit)

Convert a Redis tuple to an admission result.

Parameters

mixed $result
int $expectedLimit

Return Value

LimitResult

at line 681
protected array integerTuple(mixed $result)

Validate and return a five-integer Redis result tuple.

Parameters

mixed $result

Return Value

array