缓存mysql查询结果?

时间:2011-04-24 23:27:09

标签: php mysql caching

我在页面上使用了几个mysql查询,使用mysqli prepare语句从多个表中获取数据。

假设我在页面上的数据库表中有20个查询。由于查询太多,我想通过将结果存储在缓存中几分钟来提高性能?这是好主意吗?如果是,我如何使用缓存存储结果,例如,以下查询?

$city = "Amersfoort";

if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {
    $stmt->bind_param("s", $city);
    $stmt->execute();
    $stmt->bind_result($district);
    $stmt->fetch();
    printf("%s is in district %s\n", $city, $district);
    $stmt->close();
}

感谢。

1 个答案:

答案 0 :(得分:2)

如果SQL语句处理起来很便宜,您可能不需要缓存它们。如果它们需要大量计算或在非常大的数据集上运行,则可能需要缓存。请记住,缓存需要比SQL查询更快。

有几种方法可以在PHP中缓存:

  • 文件缓存,序列化数据并将其存储到名为查询哈希的文件中。请记住,获取缓存生命周期,并发访问等很难 - 考虑使用执行它的库,即使用PEAR的CacheCache_Lite
  • memcached
  • 将内存共享为缓存,即使用apc_add
  • 等APC功能

您也可能希望缓存整个页面或部分页面而不是单个查询。