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实现文件上传二法
Oct 09 PHP
PHP rawurlencode与urlencode函数的深入分析
Jun 08 PHP
php修改NetBeans默认字体的大小
Jul 02 PHP
php实现把数组按指定的个数分隔
Feb 17 PHP
PHP中单引号与双引号的区别分析
Aug 19 PHP
php+mysql实现用户注册登陆的方法
Jan 03 PHP
十个PHP高级应用技巧果断收藏
Sep 25 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
Aug 17 PHP
thinkphp3.x中session方法的用法分析
May 20 PHP
PHP中include/require/include_once/require_once使用心得
Aug 28 PHP
PHP中in_array函数使用的问题与解决办法
Sep 11 PHP
laravel 获取某个查询的查询SQL语句方法
Oct 12 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
PHP base64+gzinflate压缩编码和解码代码
2008/10/03 PHP
PHP图片验证码制作实现分享(全)
2012/05/10 PHP
九个你必须知道而且又很好用的php函数和特点
2013/08/08 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
PHP实现删除非站内外部链接实例代码
2014/06/17 PHP
PHP用函数嵌入网站访问量计数器
2017/10/27 PHP
js判断当页面无法回退时关闭网页否则就history.go(-1)
2014/08/07 Javascript
每天一篇javascript学习小结(属性定义方法)
2015/11/19 Javascript
移动手机APP手指滑动切换图片特效附源码下载
2015/11/30 Javascript
详解jQuery选择器
2016/12/21 Javascript
jQuery插件FusionCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/06 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
2017/03/23 Javascript
JavaScript定义及输出螺旋矩阵的方法详解
2017/12/01 Javascript
webpack实用小功能介绍
2018/01/02 Javascript
MVVM 双向绑定的实现代码
2018/06/21 Javascript
Vue安装浏览器开发工具的步骤详解
2019/05/12 Javascript
使用Vue 实现滑动验证码功能
2019/06/27 Javascript
Nodejs + Websocket 指定发送及群聊的实现
2020/01/09 NodeJs
vue如何搭建多页面多系统应用
2020/06/17 Javascript
Python简单进程锁代码实例
2015/04/27 Python
python里使用正则表达式的组嵌套实例详解
2017/10/24 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
Python使用ConfigParser模块操作配置文件的方法
2018/06/29 Python
使用EduBlock轻松学习Python编程
2018/10/08 Python
Pyqt5实现英文学习词典
2019/06/24 Python
python+selenium+chrome实现淘宝购物车秒杀自动结算
2021/01/07 Python
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
Bonami斯洛伐克:购买家具和家居饰品
2019/07/02 全球购物
.NET初级开发工程师面试题
2014/04/18 面试题
如果重写了对象的equals()方法,需要考虑什么
2014/11/02 面试题
Unix/Linux开发面试题
2016/08/16 面试题
英文版银行求职信
2013/10/09 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
2022/04/11 Python
MySQL创建管理RANGE分区
2022/04/13 MySQL