php memcached链接,PHP作为memcached客户端的具体实现方法

我们通过以前文章的介绍可以知道memcached 的具体工作原理。那么,今天我们将会为大家演示如何实现PHP作为memcached客户端的实现方法。希望能够帮助学员们更加牢固的掌握对memcached的了解。

// 包含 memcached 类文件

require_once('memcached-client.php');

// 选项设置

$options=array(

'servers' =>array('192.168.1.1:11211′), //memcached 服务的地址、端口,可用多个数组元素表示多个 memcached 服务

'debug' =>true, //是否打开 debug

'compress_threshold' =>10240, //超过多少字节的数据时进行压缩

'persistant' =>false //是否使用持久连接

);

// 创建 memcached 对象实例

$mc=newmemcached($options);

// 设置此脚本使用的***标识符

$key='mykey';

// 往 memcached 中写入对象

$mc->add($key, 'some random strings');

$val= $mc->get($key);

echo "n".str_pad('$mc->add() ', 60, '_')."n";

var_dump($val);

// 替换已写入的对象数据值

$mc->replace($key, array('some'=>'haha', 'array'=>'xxx'));

$val= $mc->get($key);

echo "n".str_pad('$mc->replace() ', 60, '_')."n";

var_dump($val);

// 删除 memcached 中的对象

$mc->delete($key);

$val= $mc->get($key);

echo "n".str_pad('$mc->delete() ', 60, '_')."n";

var_dump($val);

?>

***种PHP作为memcached客户端的方法,PHP 有一个叫做 memcache 的扩展,Linux 下编译时需要带上 –enable-memcache[=DIR] 选项,Window 下则在 php.ini 中去掉 php_memcache.dll 前边的注释符,使其可用。

除此之外,还有一种方法,可以避开扩展、重新编译所带来的麻烦,那就是直接使用 php-memcached-client。

本文选用第二种方式,虽然效率会比扩展库稍差一些,但问题不大。

首先 下载 memcached-client.php,在下载了 memcached-client.php 之后,就可以通过这个文件中的类“memcached”对 memcached 服务进行操作了。其实代码调用非常简单,主要会用到的方法有 add()、get()、replace() 和 delete(),方法说明如下:

add ($key, $val, $exp = 0)

往 memcached 中写入对象,$key 是对象的***标识符,$val 是写入的对象数据,$exp 为过期时间,单位为秒,默认为不限时间;

get ($key)

从 memcached 中获取对象数据,通过对象的***标识符 $key 获取;

replace ($key, $value, $exp=0)

使用 $value 替换 memcached 中标识符为 $key 的对象内容,参数与 add() 方法一样,只有 $key 对象存在的情况下才会起作用;

delete ($key, $time = 0)

删除 memcached 中标识符为 $key 的对象,$time 为可选参数,表示删除之前需要等待多长时间。

下面是一段简单的测试代码,代码中对标识符为 ‘mykey’ 的对象数据进行存取操作:

是不是PHP作为memcached客户端实现起来很简单,在实际应用中,通常会把数据库查询的结果集保存到 memcached 中,下次访问时直接从 memcached 中获取,而不再做数据库查询操作,这样可以在很大程度上减轻数据库的负担。通常会将 SQL 语句 md5() 之后的值作为***标识符 key。下边是一个利用 memcached 来缓存数据库查询结果集的示例(此代码片段紧接上边的示例代码):<?php

$sql='SELECT * FROM users';

$key=md5($sql);   //memcached 对象标识符

if ( !($datas= $mc->get($key)) ) {

// 在 memcached 中未获取到缓存数据,则使用数据库查询获取记录集。

echo "n".str_pad('Read datas from MySQL.', 60, '_')."n";

$conn=mysql_connect('localhost', 'test', 'test');

mysql_select_db('test');

$result=mysql_query($sql);

while ($row=mysql_fetch_object($result))

$datas[] = $row;

// 将数据库中获取到的结果集数据保存到 memcached 中,以供下次访问时使用。

$mc->add($key, $datas);

} else {

echo "n".str_pad('Read datas from memcached.', 60, '_')."n";

}

var_dump($datas);

?>

可以看出,使PHP作为memcached客户端之后,可以减少数据库连接、查询操作,数据库负载下来了,脚本的运行速度也提高了。

【责任编辑:曹凯 TEL:(010)68476606】

点赞 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值