Memcache 在PHP中的使用技巧


Posted in PHP onFebruary 08, 2010

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获取了. 
?>
PHP 相关文章推荐
一篇不错的PHP基础学习笔记
Mar 18 PHP
用PHP读取RSS feed的代码
Aug 01 PHP
ThinkPHP关联模型操作实例分析
Sep 23 PHP
根据ip调用新浪api获取城市名并转成拼音
Mar 07 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
Sep 29 PHP
php计算到指定日期还有多少天的方法
Apr 14 PHP
ThinkPHP中html:list标签用法分析
Jan 09 PHP
Yii中的cookie的发送和读取
Jul 27 PHP
php实现的redis缓存类定义与使用方法示例
Aug 09 PHP
Laravel中Facade的加载过程与原理详解
Sep 22 PHP
laravel使用Faker数据填充的实现方法
Apr 12 PHP
phpQuery采集网页实现代码实例
Apr 02 PHP
PHP Memcached应用实现代码
Feb 08 #PHP
两个开源的Php输出Excel文件类
Feb 08 #PHP
php 处理上百万条的数据库如何提高处理查询速度
Feb 08 #PHP
php+mysql事务rollback&amp;commit示例
Feb 08 #PHP
php 生成随机验证码图片代码
Feb 08 #PHP
劣质的PHP代码简化
Feb 08 #PHP
php下把数组保存为文件格式的实例应用
Feb 08 #PHP
You might like
[FAQ]PHP中的一些常识:类篇
2006/10/09 PHP
一些需要禁用的PHP危险函数(disable_functions)
2012/02/23 PHP
php获取字段名示例分享
2014/03/03 PHP
php+ajax实现无刷新分页的方法
2014/11/04 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
2019/10/15 PHP
javascript语言结构小记(一)
2011/09/10 Javascript
js函数在frame中的相互调用详解
2014/03/03 Javascript
JS+CSS实现滑动切换tab菜单效果
2015/08/25 Javascript
jQuery实现下拉框功能实例代码
2016/05/06 Javascript
WEB前端开发框架Bootstrap3 VS Foundation5
2016/05/16 Javascript
js判断手机号是否正确并返回的实现代码
2017/01/17 Javascript
loading动画特效小结
2017/01/22 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
2017/04/27 Javascript
Node.js dgram模块实现UDP通信示例代码
2017/09/26 Javascript
Node.js实现注册邮箱激活功能的方法示例
2018/03/23 Javascript
AngularJS模态框模板ngDialog的使用详解
2018/05/11 Javascript
vueJs实现DOM加载完之后自动下拉到底部的实例代码
2018/08/31 Javascript
JS实现动态星空背景效果
2019/11/01 Javascript
VUE实现吸底按钮
2021/03/04 Vue.js
python字符串过滤性能比较5种方法
2017/06/22 Python
python中numpy.zeros(np.zeros)的使用方法
2017/11/07 Python
VScode编写第一个Python程序HelloWorld步骤
2018/04/06 Python
浅谈Python中threading join和setDaemon用法及区别说明
2020/05/02 Python
Django中FilePathField字段的用法
2020/05/21 Python
基于Python采集爬取微信公众号历史数据
2020/11/27 Python
Collection和Collections的区别
2016/05/02 面试题
大专计算机个人求职的自我评价
2013/10/21 职场文书
应聘编辑职位自荐信范文
2014/01/05 职场文书
市场专员岗位职责
2014/02/14 职场文书
中介公司区域经理岗位职责范本
2014/03/02 职场文书
护理专业自荐书
2014/06/04 职场文书
刑事代理授权委托书
2014/09/17 职场文书
反四风对照检查材料
2014/09/22 职场文书
财会专业大学生求职信
2014/09/26 职场文书
vue中利用mqtt服务端实现即时通讯的步骤记录
2021/07/01 Vue.js
MySQL数据库表约束讲解
2022/06/21 MySQL