如何使用Memcached存储给定时间的数据

时间:2013-03-16 01:53:07

标签: php mysql memory memcached

我想知道如何使用Cache(MemCache)来显示我网站上有多少注册用户和活跃用户。我目前使用:

    return mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `active` =    1"), 0);

这并不好用,因为在每个页面加载时,它将查询数据库。哪个不好。那么我怎么会继续制作一个“memcache”或类似的东西,它会在10分钟左右之后将这个数字更新给所有用户?

我用Google搜索了但是我无法真正地了解如何使用它。

谢谢!

1 个答案:

答案 0 :(得分:3)

我会给你指导,而不是完整的文档/教程。

在尝试安装Memcached之前,您应该使用MySQLiPDO而不是mysql_ *函数。查看this documentation中的警告消息。

您应该install Memcached及其PHP extension

完成后,通过调用函数phpinfo()确保它已启用。如果Memcached不存在则安装失败。

这是一个明确的代码段

$mc = new Memcached();
$mc->addServer('localhost', 11211); // add a new server to the pool

// you will want to vary this key according to the query
// if two different queries use the same key your functions will return unexpected data
$cacheKey = 'a-custom-key-that-defines-the-data-within-it';

// how long will it take for the cache to expire in seconds : an hour
$cacheLifetime = 3600; 

$data = $mc->get($cacheKey); // we get the data from cache

// check if Memcached was able to retrieve the data
if ($mc->getResultCode() === Memcached::RES_FAILURE) {
    // if for some reasons the data is not there we get it and reinject into memcached
    $data = mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `active` =    1"), 0);

    $mc->set($cacheKey, $data, $cacheLifetime); // save the data in the defined $cacheKey
}

return $data;