使用MySQL服务器作为“缓存”

时间:2012-11-17 02:23:16

标签: php mysql caching ram

我知道这是一个奇怪的问题,但我有2个服务器,一个是vps,另一个是mysql主机。现在我的问题是我想尝试降低vps的负载,因为它是一个启动128mb vps。

轻微的问题,使MySQL服务器像缓存一样工作所需要的东西,我无法访问MySQL服务器上的任何内容,除了我给出的数据库。

这需要一个单独的数据库吗?请告诉我,如果有可能我可以要求我的主人添加另一个数据库。

谢谢!

1 个答案:

答案 0 :(得分:2)

如果您在VPS上托管使用MySQL作为数据库的网站,典型的请求是这样的:

  • 客户端向您的VPS上运行的Web服务器发出请求
  • 在Web服务器内运行的脚本进行数据库查询
  • 数据库返回查询结果
  • 您的脚本格式并打印结果
  • 结果显示在浏览器(客户端)

如果没有首先通过Web服务器,就无法在数据库中发出请求。

如果您想减轻VPS上的负担,可以让脚本运行得更快。大多数Web应用程序中最耗时的部分是进行数据库查询并等待结果。在很多情况下,您可以使用像memcached这样的内存缓存,通过在VPS 上缓存数据库查询的结果来避免这种情况。但请注意内存设置 - 确保将分配的最大内存设置为足够低的设置,因为服务器的内存非常少。

以下是缓存SELECT查询结果的基本示例:

$cache = new Memcached();
$cache->addServer('localhost', 11211);

$article_key = "article[$article_id]";
$article = $cache->get($article_key);

if ($article === FALSE) {
    $statement = $conn->prepare("SELECT * FROM articles WHERE id = :id");
    $statement->exec(array('id' => $article_id));
    $result = $statement->fetchAll(PDO::FETCH_ASSOC);
    if (count($result) === 0) {
        // return a 404 status
    }
    $article = $result[0]; 
    $cache->set($article_key, $article);
}

// display the article