缓存 Mysqli 结果时更新数据库 table
Updating DB table when Mysqli result is cached
在我的网站上,每天的访问量已经很多,所以我正在考虑从缓存中提供 Mysqli Db 结果。
我正在这样尝试:
$res = $mysqli->query("/*" . MYSQLND_QC_ENABLE_SWITCH . "*/" . "SELECT * FROM mytable WHERE id = $id");
while ($res->fetch_assoc()) {...}
如果我没记错的话,这个查询第一次是从数据库中来的,它会被存储到缓存中。以后的每次调用都将仅来自缓存吗?
我的问题是,如果我向 table 插入另一个数据,它会显示吗?因为它不在缓存中。
- "there are already many visits daily" 不是启用缓存的正当理由。
- 查询缓存由 mysql < 8.0 提供,开箱即用,尽管在 8.0 中默认禁用。它使数据更改时的缓存无效。
- 要使用 MYSQLND_QC_ENABLE_SWITCH,您必须安装特定的 PHP 扩展程序,我怀疑您已经安装或打算安装
- 与任何其他第 3 方缓存解决方案一样,Mysqlnd 查询结果缓存插件需要手动失效,这意味着在达到 TTL 之前不会显示新数据。总而言之,这个插件似乎完全没有用。
- "there are already many visits daily" 不是启用缓存的正当理由,因此您真的应该单独使用 SQL,像往常一样优化您的查询
在我的网站上,每天的访问量已经很多,所以我正在考虑从缓存中提供 Mysqli Db 结果。
我正在这样尝试:
$res = $mysqli->query("/*" . MYSQLND_QC_ENABLE_SWITCH . "*/" . "SELECT * FROM mytable WHERE id = $id");
while ($res->fetch_assoc()) {...}
如果我没记错的话,这个查询第一次是从数据库中来的,它会被存储到缓存中。以后的每次调用都将仅来自缓存吗?
我的问题是,如果我向 table 插入另一个数据,它会显示吗?因为它不在缓存中。
- "there are already many visits daily" 不是启用缓存的正当理由。
- 查询缓存由 mysql < 8.0 提供,开箱即用,尽管在 8.0 中默认禁用。它使数据更改时的缓存无效。
- 要使用 MYSQLND_QC_ENABLE_SWITCH,您必须安装特定的 PHP 扩展程序,我怀疑您已经安装或打算安装
- 与任何其他第 3 方缓存解决方案一样,Mysqlnd 查询结果缓存插件需要手动失效,这意味着在达到 TTL 之前不会显示新数据。总而言之,这个插件似乎完全没有用。
- "there are already many visits daily" 不是启用缓存的正当理由,因此您真的应该单独使用 SQL,像往常一样优化您的查询