Looking around this problem i can't understand why it doesn't validate lifetime.
Testing with this code, also tries different values of lifetime like 1, etc:
var_dump($cacheData->exists($cacheKey, 0)); // true
$widgets = $cacheData->get($cacheKey, 0);
if ($widgets === null){
$widgets = Content::find(array(
"page_id = '{$this->id}'",
"order" => "widget_order",
));
$cacheData->save($cacheKey, serialize($widgets), 0);
}
else{
$widgets = unserialize($widgets);
}
P.S. APC also has this problem.... only FIlebased cache works well...