我正在尝试使用以下内容对我的一个laravel队列进行评级:
Redis::throttle('key')->allow(10)->every(60)->then(function () {
// Job logic...
}, function () {
// Could not obtain lock...
return $this->release(10);
});
我不太明白'密钥'的用途是什么,每个作业需要是唯一的还是将作业标识为一个组(不是唯一的)?
另外,我假设这段代码是进入作业的句柄方法吗?
答案 0 :(得分:1)
'key'
是一个限制器名称 - 存储在redis中的哈希,它包含许多获取的锁。 lua script中的KEYS[1]
实际上实现了速率限制。
简单来说,如果你有多个Redis::throttle
的调用具有相同的参数,那么所有调用都将对配额产生影响。它不需要是唯一的,但使用不同的衰减可能会导致意外行为,因为它似乎只在reset()
函数中使用。我想有些用例,你可能需要为多个作业使用相同的哈希名称,但它必须非常罕见。