您不能存储结果对象,不,但您可以将所有行提取到一个数组中并存储该数组。如果您需要在其他地方重构您的代码,取决于您如何编写代码以及您之前对数据库访问的抽象程度。
例如,如果您有这样的功能:
function database_result($query) {
...
$result_array = $result->fetchAll();
return $result_array;
}
然后您可以在该函数中添加 Memcached 缓存:
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;
}
如果您在任何地方都使用原始 PDO 或 MySQLi 对象,那么您还有更多工作要做。