Laravel 5.2:缓存过期时的事件

时间:2016-07-01 02:13:38

标签: php laravel

当缓存即将过期时,是否有可以使用的事件?我的计划是在数据到期之前将数据写入db。目前有4个活动,但我不认为他们都没有这样做。

此外,何时调用缓存事件missedhit

1 个答案:

答案 0 :(得分:2)

不,没有到期的事件。在大多数情况下,除了设置存储数据的到期时间之外,Laravel没有参与到期。底层系统(Redis,memcached,APC等)独立处理实际到期。

vendor/laravel/framework/src/Illuminate/Cache/Respository.php有各种情况missedhit事件发生(搜索fireCacheEvent次来电)。任何从缓存(Cache::getCache::remember等)请求数据且未找到数据的调用都是未命中的。如果从缓存中检索数据,则会受到影响。

例如,Cache::get来电:

public function get($key, $default = null)
{
    if (is_array($key)) {
        return $this->many($key);
    }

    $value = $this->store->get($this->itemKey($key));

    if (is_null($value)) {
        $this->fireCacheEvent('missed', [$key]);

        $value = value($default);
    } else {
        $this->fireCacheEvent('hit', [$key, $value]);
    }

    return $value;
}