缓存 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 插入另一个数据,它会显示吗?因为它不在缓存中。

  1. "there are already many visits daily" 不是启用缓存的正当理由。
  2. 查询缓存由 mysql < 8.0 提供,开箱即用,尽管在 8.0 中默认禁用。它使数据更改时的缓存无效。
  3. 要使用 MYSQLND_QC_ENABLE_SWITCH,您必须安装特定的 PHP 扩展程序,我怀疑您已经安装或打算安装
  4. 与任何其他第 3 方缓存解决方案一样,Mysqlnd 查询结果缓存插件需要手动失效,这意味着在达到 TTL 之前不会显示新数据。总而言之,这个插件似乎完全没有用。
  5. "there are already many visits daily" 不是启用缓存的正当理由,因此您真的应该单独使用 SQL,像往常一样优化您的查询