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 相关文章推荐
用IE远程创建Mysql数据库的简易程序
Oct 09 PHP
多php服务器实现多session并发运行
Oct 09 PHP
PHP开发入门教程之面向对象
Dec 05 PHP
PHP设计模式之调解者模式的深入解析
Jun 13 PHP
php 在windows下配置虚拟目录的方法介绍
Jun 26 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
Aug 21 PHP
php获取客户端电脑屏幕参数的方法
Jan 09 PHP
php短网址和数字之间相互转换的方法
Mar 13 PHP
PHP如何实现Unicode和Utf-8编码相互转换
Jul 29 PHP
PHP从数组中删除元素的四种方法实例
May 12 PHP
php 删除一维数组中某一个值元素的操作方法
Feb 01 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
Apr 15 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
Ajax+PHP 边学边练之四 表单
2009/11/27 PHP
php简单的会话类代码
2011/08/08 PHP
PHP Parse Error: syntax error, unexpected $end 错误的解决办法
2012/06/05 PHP
JavaScript 错误处理与调试经验总结
2010/08/10 Javascript
javascript中验证大写字母、数字和中文
2014/01/15 Javascript
Javascript中的五种数据类型详解
2014/12/26 Javascript
jQuery插件开发的五种形态小结
2015/03/04 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
2015/08/30 Javascript
JavaScript实现点击按钮就复制当前网址
2015/12/14 Javascript
jQuery简单入门示例之用户校验demo示例
2016/07/09 Javascript
浅谈JS如何实现真正的对象常量
2017/06/25 Javascript
全面解析jQuery中的$(window)与$(document)的用法区别
2017/08/15 jQuery
移动设备手势事件库Touch.js使用详解
2017/08/18 Javascript
微信小程序页面滑动屏幕加载数据效果
2020/11/16 Javascript
浅谈Webpack 是如何加载模块的
2018/05/24 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
2018/12/23 Javascript
[08:47]2018国际邀请赛 OG战队举杯时刻
2018/08/29 DOTA
python3写爬取B站视频弹幕功能
2017/12/22 Python
jupyter notebook实现显示行号
2020/04/13 Python
HTML5资源预加载(Link prefetch)详细介绍(给你的网页加速)
2014/05/07 HTML / CSS
Kathmandu澳洲户外商店:新西兰户外运动品牌
2017/11/12 全球购物
Bealls Florida百货商店:生活服饰、家居装饰和鞋子
2018/02/23 全球购物
微软中国官方旗舰店:销售Surface、Xbox One、笔记本电脑、Office
2018/07/23 全球购物
使用C#编写创建一个线程的代码
2013/01/22 面试题
2014年道德讲堂实施方案
2014/03/05 职场文书
大学计划书范文800字
2014/08/14 职场文书
高二学年自我鉴定范文(2篇)
2014/09/26 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
责任书格式
2015/01/29 职场文书
研究生个人学年总结
2015/02/14 职场文书
大学运动会加油稿
2015/07/22 职场文书
Pytorch 统计模型参数量的操作 param.numel()
2021/05/13 Python
MySQL 逻辑备份与恢复测试的相关总结
2021/05/14 MySQL
手把手教你实现PyTorch的MNIST数据集
2021/06/28 Python
详解Java ES多节点任务的高效分发与收集实现
2021/06/30 Java/Android
SpringBoot详解执行过程
2022/07/15 Java/Android