首页 > 代码库 > PHP使用MemCache加速MySql速度,提高数据库负载

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速度,提高数据库负载