Você não pode armazenar o objeto de resultado, não, mas você pode buscar todas as linhas em uma matriz e armazenar essa matriz. Se você precisar refatorar seu código em outros lugares, depende de como você escreveu seu código e quão bem você abstraiu o acesso ao banco de dados anteriormente.
Por exemplo, se você tiver uma função como esta:
function database_result($query) {
...
$result_array = $result->fetchAll();
return $result_array;
}
Então você pode adicionar o cache do Memcached dentro dessa função:
function database_result($query, $expire = 60) {
$memcached_key = 'db:' . $query;
$cached = $memcached->get($memcached_key);
if ($memcached->getResultCode() !== Memcached::RES_NOTFOUND) {
return $cached;
}
...
$result_array = $result->fetchAll();
$memcached->set($memcached_key, $result_array, $expire);
return $result_array;
}
Se você usar o objeto PDO bruto ou MySQLi em todos os lugares, terá mais trabalho a fazer.