当缓存即将过期时,是否有可以使用的事件?我的计划是在数据到期之前将数据写入db。目前有4个活动,但我不认为他们都没有这样做。
此外,何时调用缓存事件missed
和hit
?
答案 0 :(得分:2)
不,没有到期的事件。在大多数情况下,除了设置存储数据的到期时间之外,Laravel没有参与到期。底层系统(Redis,memcached,APC等)独立处理实际到期。
vendor/laravel/framework/src/Illuminate/Cache/Respository.php
有各种情况missed
和hit
事件发生(搜索fireCacheEvent
次来电)。任何从缓存(Cache::get
,Cache::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;
}