如何实现 Laravel Redis 限速
How to implement Laravel Redis Rate Limiting
正在尝试将队列 Rate Limiting 实现为每秒 运行 一个作业,向外部 API 发出 HTTP 请求并加载一种类型的数据。
但不知道如何调用作业,尝试了不同的选项但没有用。在示例中:
Redis::throttle('key')->allow(10)->every(60)->then(function () {
// Job logic...
}, function () {
// Could not obtain lock...
return $this->release(10);
});
什么将放入 // Job logic...
调度队列并且此代码将在队列 class 中?以及如何命名 key
?我的队列名称是 loader
.
有什么帮助吗?
放在Job的handle方法里面。
public function handle() {
Redis::throttle('key')->allow(10)->every(60)->then(function () {
// Job logic...
}, function () {
// Could not obtain lock...
return $this->release(10);
});
}
密钥应该是任何唯一的字符串。它将识别限制:"allow(10)->every(60)".
您还可以使用此包对 Redis 或其他来源进行速率限制。使用设置将存储桶大小和速率设置为时间限制的分数,因此存储非常小。
composer require bandwidth-throttle/token-bucket
正在尝试将队列 Rate Limiting 实现为每秒 运行 一个作业,向外部 API 发出 HTTP 请求并加载一种类型的数据。
但不知道如何调用作业,尝试了不同的选项但没有用。在示例中:
Redis::throttle('key')->allow(10)->every(60)->then(function () {
// Job logic...
}, function () {
// Could not obtain lock...
return $this->release(10);
});
什么将放入 // Job logic...
调度队列并且此代码将在队列 class 中?以及如何命名 key
?我的队列名称是 loader
.
有什么帮助吗?
放在Job的handle方法里面。
public function handle() {
Redis::throttle('key')->allow(10)->every(60)->then(function () {
// Job logic...
}, function () {
// Could not obtain lock...
return $this->release(10);
});
}
密钥应该是任何唯一的字符串。它将识别限制:"allow(10)->every(60)".
您还可以使用此包对 Redis 或其他来源进行速率限制。使用设置将存储桶大小和速率设置为时间限制的分数,因此存储非常小。
composer require bandwidth-throttle/token-bucket