gpt4 book ai didi

php - Memcache - 存储 mysql 结果

转载 作者:行者123 更新时间:2023-11-29 01:06:57 25 4
gpt4 key购买 nike

我有一个数据库类,它管理我的应用程序的所有 mysql 连接。

出于多种原因,我不得不(迟迟)实现 Memcache。我已经开始弄明白了,但想确认一件事。

我希望用超时默认值来修改类。它查看它是否在内存缓存中,如果不在 - 进行查询并存储它。

但是,您似乎无法存储 mysqli 结果 (via this question)。这是否意味着您不能在应用程序中使用任何表示 $db->fetch_assoc() 或任何其他通用对象用途的代码?

如果是这样,这是否意味着我们正在全面讨论从头开始的代码更改?我想先确认一下,然后再把头放在手上。

最佳答案

您不能存储结果对象,不,但是您可以将所有行提取到一个数组中并存储该数组。如果您需要在其他地方重构您的代码,则取决于您编写代码的方式以及您之前对数据库访问的抽象程度。

例如,如果你有这样一个函数:

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 对象,那么您需要做更多的工作。

关于php - Memcache - 存储 mysql 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11124454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com