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 相关文章推荐
PHP中读写文件实现代码
Oct 20 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
Nov 24 PHP
Codeigniter通过SimpleXML将xml转换成对象的方法
Mar 19 PHP
Thinkphp模板标签if和eq的区别和比较实例分析
Jul 01 PHP
php实现生成code128条形码的方法详解
Jul 19 PHP
Laravel中的Blade模板引擎示例详解
Oct 10 PHP
php curl批处理实现可控并发异步操作示例
May 09 PHP
ThinkPHP防止重复提交表单的方法实例分析
May 10 PHP
PHPUnit测试私有属性和方法功能示例
Jun 12 PHP
PHP的PDO错误与错误处理
Jan 27 PHP
PHP批斗大会之缺失的异常详解
Jul 09 PHP
PHP实现cookie跨域session共享的方法分析
Aug 23 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
虹吸壶是谁发明的?煮出来的咖啡好喝吗
2021/03/04 冲泡冲煮
用Flash图形化数据(一)
2006/10/09 PHP
PHP IN_ARRAY 函数使用注意事项
2010/07/24 PHP
PHP详解ASCII码对照表与字符转换
2011/12/05 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
2016/05/31 PHP
Mootools 1.2教程 事件处理
2009/09/15 Javascript
js 获取服务器控件值的代码
2010/03/05 Javascript
改进UCHOME的记录发布,增强可访问性用户体验
2011/01/17 Javascript
javascript当中的代码嗅探扩展原生对象和原型(prototype)
2013/01/11 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
2014/01/07 Javascript
对js关键字命名的疑问介绍
2014/04/25 Javascript
老生常谈JavaScript中的this关键字
2016/10/01 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
2016/10/31 Javascript
微信小程序 wxapp视图容器 view详解
2016/10/31 Javascript
浅谈angular4 ng-content 中隐藏的内容
2017/08/18 Javascript
jQuery中过滤器的基本用法示例
2017/10/11 jQuery
JS脚本实现网页自动秒杀点击
2018/01/11 Javascript
javascript高仿热血传奇游戏实现代码
2018/02/22 Javascript
浅谈React的最大亮点之虚拟DOM
2018/05/29 Javascript
微信小程序实现下拉菜单切换效果
2020/03/30 Javascript
简单了解Javscript中兄弟ifream的方法调用
2019/06/17 Javascript
如何基于jQuery实现五角星评分
2020/09/02 jQuery
JavaScript语法约定和程序调试原理解析
2020/11/03 Javascript
[05:37]DOTA2-DPC中国联赛 正赛 Elephant vs iG 选手采访
2021/03/11 DOTA
Python3.遍历某文件夹提取特定文件名的实例
2018/04/26 Python
Python之批量创建文件的实例讲解
2018/05/10 Python
Python 转换RGB颜色值的示例代码
2019/10/13 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
2020/05/27 Python
python使用openpyxl操作excel的方法步骤
2020/05/28 Python
pycharm 添加解释器的方法步骤
2020/08/31 Python
竞选文艺委员演讲稿
2014/04/28 职场文书
党的群众路线教育实践活动查摆问题及整改措施
2014/10/10 职场文书
财务会计实训报告
2014/11/05 职场文书
Linux安装Nginx步骤详解
2021/03/31 Servers
用python批量解压带密码的压缩包
2021/05/31 Python
html5调用摄像头截图功能
2022/01/18 Javascript