php下Memcached入门实例解析


Posted in PHP onJanuary 05, 2015

本文较为详细的讲述了php下Memcached的入门知识与实例。分享给大家供大家参考。具体如下:

memcache 在什么情况下被使用,什么情况下不要使用?

你在何时应该使用 memcache,又要在何时避免使用它?现在你已经知道了,memcahced 是被设计为减轻数据库教程端压力的,但是你最好能制定一个良好的策略,来想办法让 memcached 来尽可能的缓存那些最影响性能的查询,你可以试着为应用中的所有查询做一些执行时间日志,可以帮助你来分析哪些内容是要重点被缓存的.

现在假设你正在运营一个电子商务网站,你可以在 memcached 中缓存产品的简介、运送信息,或者其它一些需要复杂查询的数据,等等,当一个产品页被加载的时候,上面提到的数据将会跳过数据库查询,直接从缓存中取得,缓存可以大大的改变你的网站整体性能表现,你只需要记得在后台更新产品的时候,把这些缓存一并更新就行了.

还有一些情况下,缓存数据并不是一个好主意,比如在一个数据被频繁更新的时候,每一次数据的更新,我们都需要去同时更新缓存,缓存的命中率不高,会导致一些额外的性能牺牲,这种情况下,或许直接查数据库会更好一些.

memcached 的安全性

如果你了解了 memcached 的工作流程,你可能已经注意到了,在访问缓存的过程中,没有任何权限控制的相关流程,如果你的数据不是非常重要的,你大可不必担心这方面的安全问题,如果你需要的话,以下几点可以协助你更完全的使用它:

使用唯一的 key:因为在 memcached 中的数据是以一个大的数组形式存在的,所以你应该使用唯一的 key,访问你的数据的唯一办法就是通过你保存数据时的 key,除此之外再没有其它可查询的办法.

保证你的 memcached 器安全:因为 memcached 本身并没有身份验证机制,所以对 memcached 的服务器查询,都应该通过防火墙进行,你可以在防火墙上设定规则,哪些服务器是允许被访问的,哪些是不允许被访问的.

加密你的数据:你可以将数据和 key 通过加密的方式保存在 memcached 中,这需要花费一些额外的 cpu 时间,但是为了你的数据安全,在情况允许的情况下,这个方法值得你去尝试.

<?php 

class mycache 

{ 

  private $cache; 

  function  __construct() 

  { 

    $this->cache = new memcache(); 

    // you can replace localhost by memcached server ip addr and port no. 

    $this->cache->connect('localhost', 10987); 

  }

  

  function get_data($key) 

  { 

    $data = $this->cache->get($key); 

    if($data != null) 

      return $data; 

    else 

    { 

      if($this->cache->getresultcode() == memcached::res_notfound) 

      { 

        //do the databse query here and fetch data 

        $this->cache->set($key,$data_returned_from_database); 

      } 

      else 

      { 

        error_log('no data for key '.$key); 

      } 

    } 

  } 

} 

$cache = mycache(); 

$cache->get_data('foo'); 

?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
用ADODB来让PHP操作ACCESS数据库的方法
Dec 31 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
Jun 27 PHP
测试php函数的方法
Nov 13 PHP
一漂亮的PHP图片验证码实例
Mar 21 PHP
Yii结合CKEditor实现图片上传功能
Jun 13 PHP
递归实现php数组转xml的代码分享
May 14 PHP
PHP测试成功的邮件发送案例
Oct 26 PHP
php操作access数据库的方法详解
Feb 22 PHP
Laravel5.* 打印出执行的sql语句的方法
Jul 24 PHP
Laravel框架用户登陆身份验证实现方法详解
Sep 14 PHP
PHP实现动态获取函数参数的方法示例
Apr 02 PHP
PHP count()函数讲解
Feb 03 PHP
ioncube_loader_win_5.2.dll的错误解决方法
Jan 04 #PHP
jQuery+PHP实现的掷色子抽奖游戏实例
Jan 04 #PHP
php支付宝接口用法分析
Jan 04 #PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
Jan 04 #PHP
php模仿asp Application对象在线人数统计实现方法
Jan 04 #PHP
THINKPHP2.0到3.0有哪些改进之处
Jan 04 #PHP
浅谈thinkphp的实例化模型
Jan 04 #PHP
You might like
使用淘宝IP库获取用户ip地理位置
2013/10/27 PHP
php制作动态随机验证码
2015/02/12 PHP
php实现中文字符截取防乱码方法汇总
2015/04/29 PHP
CI框架中$this-&gt;load-&gt;library()用法分析
2016/05/18 PHP
在textarea中显示html页面的javascript代码
2007/04/20 Javascript
JavaScript中的Location地址对象
2008/01/16 Javascript
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
jQuery实现类似淘宝购物车全选状态示例
2013/06/26 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
alert和confirm功能介绍
2014/05/21 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
2015/10/22 Javascript
win7下安装配置node.js+express开发环境
2015/12/06 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
2016/03/04 Javascript
jQuery实现可兼容IE6的滚动监听功能
2017/09/20 jQuery
react native基于FlatList下拉刷新上拉加载实现代码示例
2018/09/30 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
2019/10/26 Javascript
浅谈vuex为什么不建议在action中修改state
2020/02/02 Javascript
详解js中的几种常用设计模式
2020/07/16 Javascript
[01:32]dota2拉比克至宝(222)
2018/12/20 DOTA
Python常用算法学习基础教程
2017/04/13 Python
python获取外网IP并发邮件的实现方法
2017/10/01 Python
python多进程实现进程间通信实例
2017/11/24 Python
python实现KNN分类算法
2019/10/16 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
2020/05/07 Python
python中前缀运算符 *和 **的用法示例详解
2020/05/28 Python
浅析Python迭代器的高级用法
2020/07/16 Python
大学生的应聘自我评价
2013/12/13 职场文书
初中优秀教师事迹材料
2014/08/18 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
先进典型发言材料
2014/12/30 职场文书
民事诉讼答辩状范文
2015/05/21 职场文书
公司员工奖惩制度
2015/08/04 职场文书
老人院义工活动感想
2015/08/07 职场文书
什么是css原子化,有什么用?
2022/04/24 HTML / CSS
apache ftpserver搭建ftp服务器
2022/05/20 Servers
python playwrigh框架入门安装使用
2022/07/23 Python