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下目前为目最全的CURL中文说明
Aug 01 PHP
php中删除字符串中最先出现某个字符的实现代码
Feb 03 PHP
深入HTTP响应状态码速查表的详解
Jun 07 PHP
PHP对文件进行加锁、解锁实例
Jan 23 PHP
Laravel框架实现发送短信验证功能代码
Jun 06 PHP
PHP实现数组array转换成xml的方法
Jul 19 PHP
postfixadmin忘记密码后的修改密码方法详解
Jul 20 PHP
解决laravel 5.1报错:No supported encrypter found的办法
Jun 07 PHP
yii2局部关闭(开启)csrf的验证的实例代码
Jul 10 PHP
Laravel 5.4因特殊字段太长导致migrations报错的解决
Oct 22 PHP
php把字符串指定字符分割成数组的方法
Mar 12 PHP
PHP date_default_timezone_set()设置时区操作实例分析
May 16 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优化需要注意的地方
2014/11/27 PHP
PHP 二维数组和三维数组的过滤
2016/03/16 PHP
PHP错误和异常处理功能模块示例
2016/11/12 PHP
PHP实现的随机红包算法示例
2017/08/14 PHP
让ie运行js时提示允许阻止内容运行的解决方法
2010/10/24 Javascript
jQuery版仿Path菜单效果
2011/12/15 Javascript
将光标定位于输入框最右侧实现代码
2012/12/04 Javascript
jQuery实现当前页面标签高亮显示的方法
2015/03/10 Javascript
JQuery替换DOM节点的方法
2015/06/11 Javascript
jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)
2016/03/05 Javascript
jQuery 获取select选中值及清除选中状态
2016/12/13 Javascript
整理关于Bootstrap过渡动画的慕课笔记
2017/03/29 Javascript
使用node.js搭建服务器
2017/05/20 Javascript
解决vue2.0动态绑定图片src属性值初始化时报错的问题
2018/03/14 Javascript
Vue+element-ui 实现表格的分页功能示例
2018/08/18 Javascript
angular中两种表单的区别(响应式和模板驱动表单)
2018/12/06 Javascript
使用Angular Cli如何创建Angular私有库详解
2019/01/30 Javascript
如何用原生js写一个弹窗消息提醒插件
2019/05/24 Javascript
Vue学习之常用指令实例详解
2020/01/06 Javascript
Vue 打包体积优化方案小结
2020/05/20 Javascript
[01:00:54]TI4正赛第二日开场
2014/07/20 DOTA
[02:43]2018DOTA2亚洲邀请赛主赛事首日TOP5
2018/04/04 DOTA
python3实现短网址和数字相互转换的方法
2015/04/28 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
2019/11/29 Python
Python实时监控网站浏览记录实现过程详解
2020/07/14 Python
Python使用tkinter制作在线翻译软件
2021/02/22 Python
HTML5之WebGL 3D概述(上)—WebGL原生开发开启网页3D渲染新时代
2013/01/31 HTML / CSS
荷兰最大的多品牌男装连锁店:Adam Brandstore
2019/12/31 全球购物
酒店管理毕业生自荐信
2013/10/24 职场文书
应届大学生简历中的自我评价
2014/01/15 职场文书
小学生成长感言
2014/01/30 职场文书
大家检讨书5000字
2014/02/03 职场文书
2015年学生会个人工作总结
2015/04/09 职场文书
运动会通讯稿50字
2015/07/20 职场文书
销售人员管理制度
2015/08/06 职场文书
SpringMVC 整合SSM框架详解
2021/08/30 Java/Android