缓存 Mysqli 结果时更新数据库表



在我的网站上,每天都有很多访问量,所以我正在考虑从缓存中提供Mysqli Db结果。

我正在尝试这样做:

$res   = $mysqli->query("/*" . MYSQLND_QC_ENABLE_SWITCH . "*/" . "SELECT * FROM mytable WHERE id = $id");
while ($res->fetch_assoc()) {...}

如果我没记错的话,第一次这个查询将来自数据库,它将被存储到缓存中。每个进一步的调用将仅来自缓存?

我的问题是,如果我在该表中插入另一个数据,它会显示吗?因为它不在缓存中。

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

最新更新