Redis的速率限制laravel队列

时间:2017-09-20 08:07:19

标签: php laravel redis queue

我正在尝试使用以下内容对我的一个laravel队列进行评级:

Redis::throttle('key')->allow(10)->every(60)->then(function () {
    // Job logic...
}, function () {
    // Could not obtain lock...

    return $this->release(10);
});

我不太明白'密钥'的用途是什么,每个作业需要是唯一的还是将作业标识为一个组(不是唯一的)?

另外,我假设这段代码是进入作业的句柄方法吗?

1 个答案:

答案 0 :(得分:1)

'key'是一个限制器名称 - 存储在redis中的哈希,它包含许多获取的锁。 lua script中的KEYS[1]实际上实现了速率限制。

简单来说,如果你有多个Redis::throttle的调用具有相同的参数,那么所有调用都将对配额产生影响。它不需要是唯一的,但使用不同的衰减可能会导致意外行为,因为它似乎只在reset()函数中使用。我想有些用例,你可能需要为多个作业使用相同的哈希名称,但它必须非常罕见。

相关问题