0

我正在阅读Laravel Cache Documentation,它说可以将锁迁移到作业,然后

  1. 通过所有者恢复实例后释放,例如Cache::restoreLock('processing', $this->owner)->release();
  2. 或不尊重当前所有者,例如Cache::lock('processing')->forceRelease();

这让我想到一个问题what's the difference between them?,或者也许what are the use cases for each of them?

任何人都可以解释它会非常感激。

4

1 回答 1

1

不同之处在于何时应该使用它们。

仅当Cache::restoreLock('lock-name', $this->owner)->release()它的所有者是所要求的锁时,您才可以检索锁。这在您的用户可以执行操作但只有他们可以取消操作的情况下很有用。例如,您可以使用它来取消邮件应用程序中的批量删除操作。只有用户(所有者)可以取消批量删除,取消作业并释放其锁定。

另一方面,forceRelease()让您释放锁而不考虑谁执行此操作。您在 Mohamed Said 的博客中有一个很好的使用示例(在这里您可以完整阅读):

每次更新产品时,我们都希望调度一个更新搜索索引的工作。如果在短时间内更新了多个产品,我们不想分派多个工作。任何时候队列中都应该只有一个索引更新作业。

于 2020-12-30T14:28:07.100 回答