1

我正在尝试在 Laravel 中存储计划作业的最后运行时间。但是,缓存不会更新日期。我希望在再次调用该函数之前记住缓存。

public function setLastRun() {
   Cache::forget('last_automation_api_run');
   Cache::rememberForever('last_automation_api_run', function () {
          return now()->toDateTimeString();
   });
}
4

2 回答 2

1

您应该在不同的功能中使用记住和忘记方法。

public function getLastRun() {
   return \Cache::rememberForever('last_automation_api_run', function () {
          return now()->toDateTimeString();
   });
}

public function forgetLastRun() {
   \Cache::forget('last_automation_api_run');
}

每次在获取缓存值之前删除缓存,逻辑上都不正确。

而且您必须returnrememberForever缓存方法中获取值。

于 2021-04-14T15:47:17.367 回答
0

如果您使用的是集群缓存,那么当您进行第二次更改时,第一次更改可能没有通过缓存传播。如果是这种情况(或者通常对于您正在做的事情),您可以尝试以下操作:

public function setLastRun() {
   Cache::put('last_automation_api_run', now()->toDateTimeString());
}

这应该无意识地覆盖当前值,而不是删除和读取它。

于 2021-04-15T14:37:56.483 回答