【问题标题】:Laravel Cache Forget Remember Forever Cache Not Working?Laravel 缓存忘记记住永远缓存不起作用?
【发布时间】:2021-07-09 16:12:13
【问题描述】:

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

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

【问题讨论】:

    标签: laravel caching laravel-cache


    【解决方案1】:

    你应该在不同的函数中使用记住和忘记方法。

    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缓存方法的值。

    【讨论】:

    • 我正在删除最后一个设置为该值的缓存,然后再创建一个设置为该值的新缓存。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-03-31
      • 1970-01-01
      • 2021-11-24
      • 2018-08-27
      • 1970-01-01
      • 2013-11-01
      • 2019-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多