Mysql
 sql >> Database >  >> RDS >> Mysql

Memcache - memorizzazione dei risultati di MySQL

Non puoi memorizzare l'oggetto risultato, no, ma puoi recuperare tutte le righe in un array e archiviare quell'array. Se hai bisogno di refactoring del tuo codice in altri posti dipende da come hai scritto il tuo codice e da quanto bene hai astratto l'accesso al database in precedenza.

Ad esempio, se hai una funzione come questa:

function database_result($query) {
   ...
   $result_array = $result->fetchAll();
   return $result_array;
}

Quindi puoi aggiungere la memorizzazione nella cache di Memcached all'interno di quella funzione:

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 usi ovunque l'oggetto Raw PDO o MySQLi, hai più lavoro da fare.