2017-09-20 71 views
0

我嘗試使用下面的速率限制我laravel隊列之一:限速laravel隊列Redis的

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

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

我不太明白什麼是「關鍵」的用途,這是否需要每個工作都是獨一無二的,還是將工作確定爲一個團體(不是唯一的)?

此外,我假設這段代碼是進入工作的處理方法?

回答

0

'key'是一個限制器名稱 - 存儲在redis中的哈希,它保存獲取的鎖的數量。 lua script中的KEYS[1]實際上實現了速率限制。

說得很簡單,如果您有多個調用Redis::throttle具有相同的參數,所有這些都將有助於配額。不要求它是唯一的,但使用不同的衰減可能會導致意外的行爲,因爲它似乎僅用於reset()函數。我想有些用例可能需要爲多個作業使用相同的散列名稱,但它一定非常少見。