【问题标题】:Rate limit laravel queue with Redis使用 Redis 限制 laravel 队列的速率
【发布时间】:2017-09-20 08:07:19
【问题描述】:

我正在尝试使用以下方法限制我的 laravel 队列之一:

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

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

我不太明白“密钥”的用途,这是否需要每个作业唯一或将作业标识为一个组(不是唯一的)?

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

【问题讨论】:

    标签: php laravel redis queue


    【解决方案1】:

    'key' 是一个限制器名称 - 存储在 redis 中的哈希值,用于保存获得的锁的数量。真正实现限速的是lua script中的KEYS[1]

    简单来说,如果你有多个Redis::throttle 的调用具有相同的参数,它们都会对配额有贡献。它不需要是唯一的,但是以不同的衰减使用它可能会导致意外行为,因为它似乎仅用于reset() 函数。我想在某些用例中,您可能需要对多个作业使用相同的哈希名称,但这种情况肯定很少见。

    【讨论】:

      猜你喜欢
      • 2018-05-04
      • 1970-01-01
      • 1970-01-01
      • 2018-05-04
      • 1970-01-01
      • 2021-05-16
      • 1970-01-01
      • 1970-01-01
      • 2017-06-18
      相关资源
      最近更新 更多