Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Memcache - armazenando resultados do mysql


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.