Page

[学习笔记]pdo连数据库加memcache缓存的php实现

1149Anson17-01-30


[学习笔记]pdo连数据库加memcache缓存的php实现

pdo连接数据库参考文章http://tp0.top/index.php/article/page/id/986.html


1、windows下memcache的安装

https://pecl.php.net/package/memcache/3.0.8/windows

按实际环境下载memcache程序,查看phpinfo

blob.png

blob.png,ts即为线程安全,x86版本系统


下载后将压缩包里面的php_memcache.dll文件放在php目录的ext文件夹


安装成功后为blob.png


2、memcache入门使用

范例

bool Memcache::connect ( $host, $port, $timeout)
连接memcache服务器

$host(string)  服务器域名或ip
$port(int)  服务器tcp端口号,默认值是11211

$memcache = new Memcache;
$memcache->connect(‘127.0.0.1‘, 11211);


3、memcache缓存pdo获取的数据

<?php 
header('content-type:text/html;charset=utf8');	
//实例化memcache对象
$memcache = new Memcache();
//创建连接
$memcache->connect('127.0.0.1', 11211);

$query = 'select * from blog_article';
//创建键名
$key = md5($query);

//判断键名是否已经被缓存
if (!$memcache->get($key)) {
        //pdo连接
	try {
		$conn = new PDO('mysql:host=localhost;dbname=ansion_blog',
		 'root', 'root');
	} catch (Exception $e){
		die($e->getMessage());
	}	
		
	try {
		$data = $conn->query($query);
		while ($row = $data->fetch(PDO::FETCH_ASSOC)) {
			$arr[] = $row;
		}
                 
                //增加$arr序列化字符串到缓存$key,30秒到期
		$memcache->add($key, serialize($arr), 0, 30);
		$result = $arr;
		$mark = 'mysql';
	} catch (Exception $e) {
		die($e->getMessage());
	}
}else{

	$mark = 'memcache';
	//获取memcache缓存里对应的键名值
	$data_mem = $memcache->get($key);
	$result = unserialize($data_mem);
}
        //关闭memcache连接
	$memcache->close();

	echo $mark.'<br />'.$key.'<br />';

	var_dump($result);	

第一次运行程序

blob.png

刷新一下变成缓存的内容了

blob.png


3、使用telnet连接memcache

blob.png

然后 get c97c4c50bc5093c8083ba5c6bb96c00e 就可以获取value




来自ansion博客

2017年1月30日