【问题标题】:Difference between owner release and forceRelease of Laravel CacheLaravel Cache 的 owner release 和 forceRelease 的区别
【发布时间】:2021-04-07 00:05:48
【问题描述】:

我正在阅读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?

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

【问题讨论】:

    标签: laravel locking laravel-cache


    【解决方案1】:

    区别在于你应该在什么时候使用它们。

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-05-10
      • 2015-11-03
      • 1970-01-01
      • 1970-01-01
      • 2012-09-29
      • 1970-01-01
      • 2010-11-09
      • 2019-07-22
      • 2010-12-30
      相关资源
      最近更新 更多