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 db类库进行数据库操作
Mar 19 PHP
php 数组二分法查找函数代码
Feb 16 PHP
VIM中设置php自动缩进为4个空格的方法详解
Jun 14 PHP
PHP多线程之内部多线程实例分析
Mar 09 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
May 13 PHP
PHP微信开发之二维码生成类
Jun 26 PHP
PHP使用自定义方法实现数组合并示例
Jul 07 PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 PHP
php readfile()修改文件上传大小设置
Aug 11 PHP
PHP下 Mongodb 连接远程数据库的实例代码
Aug 30 PHP
Laravel5.5 动态切换多语言的操作方式
Oct 25 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入门源程序
2006/10/09 PHP
PHP 程序授权验证开发思路
2009/07/09 PHP
php上的memcache和memcached两个pecl库
2010/03/29 PHP
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
2010/12/29 PHP
php中json_encode中文编码问题分析
2011/09/13 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
PHP数组对象与Json转换操作实例分析
2019/10/22 PHP
ExtJs扩展之GroupPropertyGrid代码
2010/03/05 Javascript
Eval and new funciton not the same thing
2012/12/27 Javascript
javascript 函数声明与函数表达式的区别介绍
2013/10/05 Javascript
使用phantomjs进行网页抓取的实现代码
2014/09/29 Javascript
JavaScript获取两个数组交集的方法
2015/06/09 Javascript
jquery淡入淡出效果简单实例
2016/01/14 Javascript
AngularJS的依赖注入实例分析(使用module和injector)
2017/01/19 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
2017/04/10 Javascript
xmlplus组件设计系列之分隔框(DividedBox)(8)
2017/05/02 Javascript
jQuery实现简单的抽奖游戏
2017/05/05 jQuery
JavaScript之DOM_动力节点Java学院整理
2017/07/03 Javascript
vue系列之动态路由详解【原创】
2017/09/10 Javascript
Vue2.0结合webuploader实现文件分片上传功能
2018/03/09 Javascript
Node.js使用Angular简单示例
2018/05/11 Javascript
ES6 class的应用实例分析
2019/06/27 Javascript
Python实现模拟登录及表单提交的方法
2015/07/25 Python
python psutil库安装教程
2018/03/19 Python
python切片及sys.argv[]用法详解
2018/05/25 Python
Python3安装psycopy2以及遇到问题解决方法
2019/07/03 Python
python-视频分帧&amp;多帧合成视频实例
2019/12/10 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
2020/10/04 Python
俄罗斯金苹果网上化妆品和香水商店:Goldapple
2019/12/01 全球购物
mysql有关权限的表都有哪几个
2015/04/22 面试题
集中整治工作方案
2014/05/01 职场文书
妇联主席先进事迹
2014/05/18 职场文书
管理提升方案
2014/06/04 职场文书
服务行业演讲稿
2014/09/02 职场文书
家属慰问信
2015/02/14 职场文书
2015年度护士个人工作总结
2015/04/09 职场文书