Memcache 在PHP中的基本用法

Memcache 在PHP中的使用
id="cproIframe_u1892994_2" height="90" marginheight="0" src="http://pos.baidu.com/acom?adn=3&at=231&aurl=&cad=1&ccd=32&cec=gb2312&cfv=14&ch=0&col=zh-cn&conBW=0&conOP=1&cpa=1&dai=2&dis=0&ltr=http%3A%2F%2Fwww.baidu.com%2Fs%3Fie%3Dutf-8%26f%3D8%26rsv_bp%3D1%26tn%3Dbaidu%26wd%3Dmemcache%2520php%25E5%259F%25BA%25E6%259C%25AC%25E7%2594%25A8%25E6%25B3%2595%26rsv_pq%3D8af3312b001063cb%26rsv_t%3D26ecCgEY195exI7Dn8jJDFHDiPbZeTXAx8BjxZ228UcUjFUReaD1Rg66LKc%26rsv_enter%3D1%26inputT%3D1388%26rsv_sug3%3D6%26rsv_sug1%3D3%26rsv_sug2%3D0%26rsv_sug4%3D2449%26rsv_sug%3D1&ltu=http%3A%2F%2Fwww.jb51.net%2Farticle%2F22066.htm&lu_161=0&lunum=6&n=jb51_cpr&pcs=1639x813&pis=10000x10000&ps=489x353&psr=1920x1080&pss=1639x492&qn=215490b722707ba9&rad=&rsi0=580&rsi1=90&rsi5=4&rss0=%23FFFFFF&rss1=%23F7FCFF&rss2=%230000ff&rss3=%23444444&rss4=%23008000&rss5=&rss6=%23e10900&rss7=&scale=&skin=tabcloud_skin_3&stid=5&td_id=1892994&ti=Memcache%20%E5%9C%A8PHP%E4%B8%AD%E7%9A%84%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7_php%E6%8A%80%E5%B7%A7_%E8%84%9A%E6%9C%AC%E4%B9%8B%E5%AE%B6&titFF=%E5%AE%8B%E4%BD%93&titFS=12&titTA=left&tn=text_default_580_90&tpr=1428765123704&ts=1&version=2.0&xuanting=0&dtm=BAIDU_DUP2_SETJSONADSLOT&dc=2&di=u1892994&tt=1428765123662.207.301.301" frameborder="0" width="580" allowtransparency="" marginwidth="0" scrolling="no">
add($key, $value, $expiry);
$key: 唯一标识, 用于区分写入的数据
$value: 要写入的数据
$expiry: 过期时间, 默认为永远有效
用途: 将数据写入到memcache中

get($key)
$key: 通过写入时的$key获取对应的数据
用途: 获取memcache中的数据

replace($key, $value, $expiry)
该方法参数与add方法的参数相同
用途也很明显就是替换数据

delete($key, $time = 0)
$key: 唯一标识
$time: 延迟时间
用途: 删除memcache中存储的数据

下面来看看具体用法:
add($key, $value, $expiry);
$key: 唯一标识, 用于区分写入的数据
$value: 要写入的数据
$expiry: 过期时间, 默认为永远有效
用途: 将数据写入到memcache中

get($key)
$key: 通过写入时的$key获取对应的数据
用途: 获取memcache中的数据

replace($key, $value, $expiry)
该方法参数与add方法的参数相同
用途也很明显就是替换数据

delete($key, $time = 0)
$key: 唯一标识
$time: 延迟时间
用途: 删除memcache中存储的数据

下面来看看具体用法:

代码
复制代码 代码如下:

<?php
$m = new Memcache();
$m->connect('localhost', 11211);
$data = 'content'; //需要缓存的数据
$m->add('mykey', $data);echo $m->get('mykey'); // 输出 content
$m->replace('mykey', 'data'); //替换内容为dataecho $m->get('mykey');//输出 data
$m->delete('mykey'); //删除echo $m->get('mykey'); //输出 false 因为已经删掉了哦..
?>



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

<?php
//连接memcache
$m = new Memcache();
$m->connect('localhost', 11211);
//连接数据库的我就不写了.
$sql = 'SELECT * FROM users';
$key = md5($sql); //md5 SQL命令 作为 memcache的唯一标识符
$rows = $m->get($key); //先重memcache获取数据
if (!$rows) {
//如果$rows为false那么就是没有数据咯, 那么就写入数据
$res = mysql_query($sql);
$rows = array();
while ($row = mysql_fetch_array($res)) {
$rows[] = $row;
}
$m->add($key, $rows);
//这里写入重数据库中获取的数据, 可以设置缓存时间, 具体时间设置多少, 根据自己需求吧.
}
var_dump($rows); //打印出数据
//上面第一次运行程序时, 因为还没有缓存数据, 所以会读取一次数据库, 当再次访问程序时, 就直接重memcache获取了.
?>





再次着重介绍

memcache

的一些常用方法。

 

Memcache::add // 

添加一个值,如果已经存在,则返回

false 

Memcache::addServer // 

添加

Memcache

地址

 

Memcache::close // 

关闭一个

Memcache

的连接

 

Memcache::connect // 

打开一个到

Memcache

的连接

 

Memcache::decrement // 

对保存的某个

key

中的值进行减法操作

 

Memcache::delete // 

删除一个

Memcache

上的

key

 

Memcache::flush // 

刷新所有

Memcache

上保存的项目(类似于删除所有的保存的项目)

 

Memcache::get // 

Memcache

上获取一个

key

 

Memcache::getExtendedStats // 

获取进程池中所有进程的运行系统统计

 

Memcache::getServerStatus // 

获取运行服务器的参数

 

Memcache::getStats //

获取当前

Memcache

服务器运行的状态

 

Memcache::getVersion // 

返回运行的

Memcache

的版本信息

 

Memcache::increment // 

对保存的某个

key

中的值进行加法操作

 

Memcache::pconnect // 

打开一个到

Memcache

的长连接

 

Memcache::replace 

// 

Memcache

Memcache::set

 

Memcache::set // 

Memcache

添加一个值,如果已经存在,则覆写

 

Memcache::setCompressThreshold // 

对大于某一大小的数据进行压缩

 

Memcache::setServerParams // 

在运行时修改服务器的参数

 

下面是一些简单的用法实例,仅供参考:

 

 

 

<?php 

 

 

$mem = new Memcache; 

 

 

$mem->connect("127.0.0.1", 12000); 

 

 

//Memcache::set

方法有四个参数,

第一个参数是

key

第二个参数是

value

第三个参数可

选,表示是否压缩保存,第四个参数可选,用来设置一个过期自动销毁的时间。

 

 

 

$mem->set('test','123',0,60); 

 

 

//Memcache::add

方法的作用和

Memcache::set

方法类似,

区别是如果

 

Memcache::add

方法

的返回值为

false

,表示这个

key

已经存在,而

Memcache::set

方法则会直接覆写。

 

$mem->add('test','123',0,60); 

//Memcache::get

方法的作用是获取一个

key

值,

Memcache::get

方法有一个参数,表示

key

 

$mem->get('test');//

输出为

'123' 

//Memcache::replace 

方法的作用是对一个已有的

key

进行覆写操作,

Memcache::replace

方法

有四个参数,作用和

Memcache::set

方法的相同。

 

$mem->replace('test','456',0,60); 

 

//Memcache::delete

方法的作用是删除一个

key

值,

Memcache::delete

方法有两个参数,第

一个参数表示

key

,第二个参数可选,表示删除延迟的时间。

 

$mem->delete('test',60); 

?>


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值