memcache在PHP存取中的应用

当用户刷新网页或有大量用户访问网站时,就会产生大量数据库查询进程,这不但拖慢了网页打开速度,同时也给服务器带来了很大压力。

作为php菜鸟,今天刚刚接触到了 memcache 这个东东,于是自己跟着文档做了一个实例,一方面鼓励自己,另一方面等大神轻喷~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php 
header("Content-Type:text/html;charset=utf-8");
//创建memcache对象
$mem = new Memcache;

//连接memcache服务器
$mem->connect("localhost",11211);


$sql = "select id,name,pass,age,sex,email from user order by id";
$key = md5($sql); //可用SQL语句做键值

//直接从内存中要数据
$data = $mem->get($key);

//如果内存中没有数据,就从数据库中取出
if (empty($data)) {

//数据库连接操作
try{
$pdo = new PDO("mysql:host=localhost;dbname=phpdemo", "root", "");

}catch(PDOException $e){
echo "数据库连接失败,原因是".$e->getMessage();
}


$stmt = $pdo->prepare($sql);

$stmt->execute();

$data = $stmt->fetchAll(PDO::FETCH_ASSOC);

$mem->add($key, $data, MEMCACHE_COMPRESSED, 5); //5秒

echo "<br>这是第一次访问,从数据库访问并存到内存中!";
}
echo "<pre>";
print_r($data);
echo "</pre>";

//关闭连接
$mem->close();

?>