A-A+

PHP MemCached缓存配置与应用

2012年01月21日 PHP技术文章 暂无评论 阅读 55 views 次

1、Memcache 相关介绍

memcache是一个高性能的分布式的内存对象缓存系统,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等,使用Memcache的网站一般流量都是比较大的,为了缓解数据库的压力,让Memcache作为一个缓存区域,把部分信息保存在内存中,在前端能够迅速的进行存取。

2、Memcache Win32 的安装和PHP中的配置

下载:Memcache Win32

http://www.jz123.cn/soft/7/286/2010/2010020118056.html

1)、解压到目录:d: memcached (自定义,任何目录)

2)、d: memcachedmemcached.exe -d install

3)、d: memcached memcached.exe -d start (启动服务)

4)、telnet 127.0.0.1 11211 (使用telnet连接测试是否成功)

5)、输入:stats 命令查看基本信息

PHP中配置 Memcache

1)、下载:php_memcache.dll 组件

2)、复制 php_memcache.dll 到指定的组件目录,默认在 phpext

3)、在PHP.ini 加入一句话:extension=php_memcache.dll

4)、重启WEB服务,使用 phpinfo() 函数查看启用情况

3、PHP中测试 Memcache功能

$mem = new Memcache;//实例化Memcache

$mem->connect(’127.0.0.1′, 11211) or die (“连接失败“);//连接

$mem->getVersion();//获得版本信息 ,可使用echo 打印

Memcache 的方法使用

$memcache = new memcache;

$memcache->connect(’127.0.0.1′, 11211) or die (“连接失败“);

$memcache->set(‘Key’, ‘Value‘, ‘Zip’, ‘Time’);

$val = $memcache->get(‘Key‘);

set方法添加一个缓存值(键名,键值,是否压缩,保持时间)

get通过键名,获取缓存中的内容

4、Memcache 有哪些常用方法

Memcache::add — 添加一个值,如果已经存在,则返回false

Memcache::addServer — 添加一个可供使用的服务器地址

Memcache::close — 关闭一个Memcache对象

Memcache::connect — 创建一个Memcache对象

memcache_debug — 控制调试功能

Memcache::decrement — 对保存的某个key中的值进行减法操作

Memcache::delete — 删除一个key值

Memcache::flush — 清除所有缓存的数据

Memcache::get — 获取一个key值

Memcache::getExtendedStats — 获取进程池中所有进程的运行系统统计

Memcache::getServerStatus — 获取运行服务器的参数

Memcache::getStats — 返回服务器的一些运行统计信息

Memcache::getVersion — 返回运行的Memcache的版本信息

Memcache::increment — 对保存的某个key中的值进行加法操作

Memcache::pconnect — 创建一个Memcache的持久连接对象

Memcache::replace — R对一个已有的key进行覆写操作

Memcache::set — 添加一个值,如果已经存在,则覆写

Memcache::setCompressThreshold — 对大于某一大小的数据进行压缩

Memcache::setServerParams — 在运行时修改服务器的参数

5、memcached加锁解锁实例

$memcache = new Memcache();
$memcache->addServer('127.0.0.1', 11211);
if (mem_lock($memcache, 'newisbn')) {
$maxisbn = $db->getOne("select max(isbn) as maxisbn from sd_goods_fetch where isbn like '%SD'");
if (!$maxisbn) $maxisbn = $db->getOne("select max(isbn) as maxisbn from sd_goods where isbn like '%SD'");
if (!$maxisbn) $maxisbn = '97800000000SD';
$isbn = (str_replace('SD', '', $maxisbn)+1).'SD';
$goods_temp_arr['isbn'] = $isbn;
$goods_temp_arr['qty'] = 1;
$goods_temp_arr['admin_id'] = $uid;
$goods_temp_arr['fetch_id'] = $fid;
$goods_temp_arr['addtime'] = time();
$res = $db->insert($_CFG["TABLE"]["LIST"]['goods_fetch'], $goods_temp_arr);
if ($res) echo "<script>alert('新建ISBN成功!');</script>";
else echo "<script>alert('新建ISBN失败!');</script>";
} else {
echo "<script>alert('页面被锁定,暂时无法进行本操作,请稍后再试!');</script>";
}
$memcache->delete('newisbn');
$current_page = "goods_fetch.php?fid=" . $fid;
echo "<script>window.location.href='" . $current_page . "'</script>";
/**
* memcache加锁函数
* @param object $memcache
* @param string $newisbn
* @param int $times
* @return boolean
*/
function mem_lock($memcache, $newisbn, $times = 0) {
$lock = $memcache->add('newisbn', $newisbn, false, 120);
if ($lock) {
return true;
} else {
sleep(1);
if ($times < 10) mem_lock($memcache, $newisbn, $times+1);
else return false;
}
}

评注:整理了一些PHP memcache 的缓存的常用的使用方法,使用PHP memcache 来做加速引擎,可以使用PHP的速度更快速。

标签:

给我留言