PHP使用MemCache加速MySql速度,提高数据库负载
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP使用MemCache加速MySql速度,提高数据库负载相关的知识,希望对你有一定的参考价值。
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。
————摘自AMH面板简介
博客站的服务器用的AMH的面板没有自己编译php之类 应用中心直接安装了MemCache服务器
如果用自己编译 http://memcached.org/ 去官网下载安装就可以了,这里就不多说了~
安装完后,确保PHP服务器支持MemCache拓展,如果不支持可以到下面两个地址安装依赖库
https://launchpad.net/libmemcached/1.0/1.0.4/+download/libmemcached-1.0.4.tar.gz
http://pecl.php.net/get/memcached-2.0.1.tgz
安装完后phpinfo()查看是否支持MemCache功能,如果支持就可以进行下一步了
MemCache不修改的话应该是用默认口11211
首先先测试下能不能正常用
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211);
$mem->set(‘test‘, ‘ok‘, 0,60);
$mem->get(‘test‘);
php执行上面代码,如果输出ok则程序正常,可以使用。
我的想法大致是这样的,首先判断一下 当前数据是否在MemCache数据库有存储,如果有直接输出,不存在则调用mysql数据并存储输出。
这样大致就可以实现数据的储存了,我ihxvip就是这样实现的,下面给一个类似查询的栗子吧,使用mysqli
首先第一步,创建
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211);
然后直接if数据是否存在
if($mem->get($data) ==‘‘){
等于空则开始使用数据库,并且存储进MemCache
$db = new mysqli(sqlhost,sqluser,sqlpass,sqldata);
$db->query("set names ‘UTF8‘");
$rows = $db->query("SELECT * FROM test where id = data");
if($row = $rows->fetch_array()){
$mem->set($data, $row, 0, 300);
}
处理好后,差不多就行了,反正这玩意就是放在程序头运行,需要数据处,直接使用get获取$mem->get($data) 就可以了
如果想要方便点,你可以放进一个函数里,反正大体我就是这样处理的,使用请自行修改,这里不过思路而已
不过用了memcache速度真的没的说,处理速度比mysql 6多了
以上是关于PHP使用MemCache加速MySql速度,提高数据库负载的主要内容,如果未能解决你的问题,请参考以下文章
Memcache缓存服务器(Nginx+php+Memcache+MySQL)
memcache缓存服务器(Nginx+PHP+memcache+MySQL)