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 insert语法详解
Jun 07 PHP
php 无限分类的树类代码
Dec 03 PHP
探讨:如何编写PHP扩展
Jun 13 PHP
解析yii数据库的增删查改
Jun 20 PHP
使用配置类定义Codeigniter全局变量
Jun 12 PHP
phpstorm编辑器乱码问题解决
Dec 01 PHP
PHP上传文件时自动分配路径的方法
Jan 09 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
Mar 27 PHP
详解WordPress中简码格式标签编写的基本方法
Dec 22 PHP
PHP使用递归算法无限遍历数组示例
Jan 13 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
Aug 21 PHP
laravel 实现根据字段不同值做不同查询
Oct 23 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+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
2006/12/16 PHP
使用adodb lite解决问题
2006/12/31 PHP
PHP校验ISBN码的函数代码
2011/01/17 PHP
用PHP的超级变量$_GET获取HTML表单(Form) 数据
2011/05/07 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
2013/12/24 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
android上传图片到PHP的过程详解
2015/08/03 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
php实现微信企业转账功能
2018/10/02 PHP
Prototype源码浅析 String部分(三)之HTML字符串处理
2012/01/15 Javascript
Javascript中找到子元素在父元素内相对位置的代码
2012/07/21 Javascript
append和appendTo的区别以及appendChild用法
2013/12/24 Javascript
js实现的标题栏新消息闪烁提示效果
2014/06/06 Javascript
实例详解jQuery表单验证插件validate
2016/01/18 Javascript
AngularJS中的过滤器filter用法完全解析
2016/04/22 Javascript
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
python中global用法实例分析
2015/04/30 Python
Python基于OpenCV库Adaboost实现人脸识别功能详解
2018/08/25 Python
Django forms组件的使用教程
2018/10/08 Python
使用PyCharm进行远程开发和调试的实现
2019/11/04 Python
使用IDLE的Python shell窗口实例详解
2019/11/19 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
2020/04/29 Python
Python3 搭建Qt5 环境的方法示例
2020/07/16 Python
什么是反射?如何实现反射?
2016/07/25 面试题
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
小学模范班主任事迹材料
2014/05/13 职场文书
本科毕业生自荐信
2014/06/02 职场文书
中学生秋季运动会广播稿
2014/09/21 职场文书
教育实践活动对照检查材料
2014/09/23 职场文书
学校运动会广播稿范文
2014/10/02 职场文书
后进基层党组织整改方案
2014/10/25 职场文书
Java中常用解析工具jackson及fastjson的使用
2021/06/28 Java/Android
Pygame Event事件模块的详细示例
2021/11/17 Python
css3带你实现3D转换效果
2022/02/24 HTML / CSS
提高系统的吞吐量解决数据库重复写入问题
2022/04/23 MySQL