基于每个查询重置mysqli缓存

时间:2017-02-07 05:57:35

标签: php mysql caching

参考:

http://php.net/manual/en/mysqlnd-qc.quickstart.caching.php

PHP Best way to cache MySQL results?

PHP caching sql results

从我的未知中,我可以通过添加

使查询得到快速缓存
"/*" . MYSQLND_QC_ENABLE_SWITCH . "*/ "."SELECT ...

在我的查询前面(上面的php.net链接示例1)。

问题是,我可以这样做,意思是,要求服务器重新加载'使用单个QUERY动态缓存?

关于SO的一个答案说我可以使用

重置缓存
$db->query("RESET QUERY CACHE;");

但这需要一个额外的电话,我不需要清除所有缓存的结果。

我正在为我的平台选择fecth配置设置,但我不想为每个请求(图像,json,ajax等)进行选择调用,所以我会在第一个请求中缓存结果客户端然后使用缓存设置进行后续请求。当新会话从客户端启动时,查询将重置缓存,并且如果设置更改(也就是维护== true)或会话过期等,则监控系统会将用户发送出去。所以不用担心。

这只是一种情况,我可以利用能够即时缓存和重新加载缓存。我还没有测试任何东西,我只是想知道它是否可行,然后我开始深入挖掘代码并同时添加99个错误;)

  • 我正在使用mysqli(准备好的声明,但不是唯一的)而不是PDO。
  • 我没有使用任何框架,
  • 在PHP 5.4.16,centOS 7和mariaDB 5.5.52 for dev
  • CentOs 6,php 5.4.1 with MySQL 5.5.52 in prod。

PRECISION:想要/需要一个查询,为这个特定查询(不是所有缓存)刷新缓存,运行查询,缓存新结果并返回结果。

经过研究,我发现http://php.net/manual/en/ref.mysqlnd-qc.php可以得到帮助。

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找SQL_NO_CACHE修饰符:

SELECT SQL_NO_CACHE FROM table

将为您提供非缓存结果