2017-09-20 3 views
0

Je suis en train de limitons l'une de mes files d'attente Laravel en utilisant le ci-dessous:file d'attente Laravel limite de taux avec Redis

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

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

Je ne comprends pas tout à fait ce que la « clé » est utilisé pour, est-ce besoin de être unique par emploi ou quelque chose qui identifie les emplois en tant que groupe (pas unique)?

En outre, je suppose que ce code doit entrer dans la méthode de poignée du travail?

Répondre

0

'key' est un nom de limiteur - le hachage stocké dans redis qui contient le nombre de verrous acquis. C'est KEYS[1] dans le lua script qui implémentent réellement la limitation de débit. Pour simplifier, si vous avez plusieurs invocations de Redis::throttle avec le même argument, tous contribueront au quota. Il n'est pas nécessaire d'être unique, mais l'utiliser avec des désintégrations différentes peut entraîner un comportement inattendu, car il semble être utilisé dans la fonction reset() uniquement. J'imagine qu'il existe des cas d'utilisation où vous devrez peut-être utiliser le même nom de hachage pour plusieurs tâches, mais cela doit être assez rare.