I've been using Zend_Cache for a while to improve performance on my sites and it has this cool feature where you don't have to specify the key when you perform the save. You end up with a lot of code that looks like this:

$key = 'permission' . $role->getId();
if(($permissions = $cache->load($key)) == false){
    $permissions = $this->someReallyComplicatedQuery();
    $cache->save($permissions);
}

This works really really well but then I started noticing some performance problem and random page failures on one of the sites I maintain. I started looking into the problems and I found some of these sections weren't actually saving the correct data so I started breaking down what exactly someReallyComplicatedQuery was doing only to find ANOTHER one of these blocks. It turns on the second call to $cache->load() was resetting the value and causing all the problem. So from now on I'm always saving using this form (actually I've rewritten all of these blocks on several of my sites):

$key = 'permission' . $role->getId();
if(($permissions = $cache->load($key)) == false){
    $permissions = $this->someReallyComplicatedQuery();
    $cache->save($permissions , $key);
}