Laravel Cache Забудьте, помните, что Forever Cache не работает?

Я пытаюсь сохранить последнее время выполнения запланированного задания в Laravel. Однако кеш не обновляет дату. Я хочу, чтобы кеш запомнился, пока функция не будет вызвана снова.

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

2 ответа

Вы должны использовать метод запомнить и забыть в разных функциях.

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

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

Каждый раз, когда вы удаляете кеш перед загрузкой значений кеша, делает логически неверным.

И ты должен return ценности, исходящие из rememberForever метод кеширования.

Если вы используете кластерный кеш, то есть вероятность, что первое изменение не распространилось через кеш, когда вы делаете второе. В этом случае (или в общем для того, что вы делаете) вы можете попробовать следующее:

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

это должно бездумно перезаписывать текущее значение, а не удалять и читать его.

Другие вопросы по тегам