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 相关文章推荐
C# Assembly类访问程序集信息
Jun 13 PHP
PHP开发环境配置(MySQL数据库安装图文教程)
Apr 28 PHP
PHP中MVC模式的模板引擎开发经验分享
Mar 23 PHP
PHP json_encode中文乱码问题的解决办法
Sep 09 PHP
php while循环得到循环次数
Oct 26 PHP
ThinkPHP调试模式与日志记录概述
Aug 22 PHP
PHP实现的一致性哈希算法完整实例
Nov 14 PHP
Thinkphp和onethink实现微信支付插件
Apr 13 PHP
Yii2.0预定义的别名功能小结
Jul 04 PHP
PHP实现求连续子数组最大和问题2种解决方法
Dec 26 PHP
laravel validate 设置为中文的例子(验证提示为中文)
Sep 29 PHP
PHP7生产环境队列Beanstalkd用法详解
May 19 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
php实现的用户查询类实例
2015/06/18 PHP
PHP的AES加密算法完整实例
2016/07/20 PHP
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
Javascript图像处理思路及实现代码
2012/12/25 Javascript
你必须知道的Javascript知识点之&quot;this指针&quot;的应用
2013/04/23 Javascript
Knockout结合Bootstrap创建动态UI实现产品列表管理
2016/09/14 Javascript
BootStrap表单控件之文本域textarea
2017/05/23 Javascript
Vue的Class与Style绑定的方法
2017/09/01 Javascript
JavaScript基础进阶之数组方法总结(推荐)
2017/09/04 Javascript
jQuery子选择器与可见性选择器实例分析
2019/06/28 jQuery
微信小程序基于Taro的分享图片功能实践详解
2019/07/12 Javascript
vue中使用[provide/inject]实现页面reload的方法
2019/09/30 Javascript
JavaScript复制变量三种方法实例详解
2020/01/09 Javascript
JavaScript实现Excel表格效果
2020/02/07 Javascript
vue-quill-editor 自定义工具栏和自定义图片上传路径操作
2020/08/03 Javascript
Python中特殊函数集锦
2015/07/27 Python
如何实现删除numpy.array中的行或列
2018/05/08 Python
浅谈tensorflow中几个随机函数的用法
2018/07/27 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
2018/12/13 Python
VSCode Python开发环境配置的详细步骤
2019/02/22 Python
详解Python locals()的陷阱
2019/03/26 Python
python实现滑雪者小游戏
2020/02/22 Python
Python通过kerberos安全认证操作kafka方式
2020/06/06 Python
Python之字典对象的几种创建方法
2020/09/30 Python
Python+OpenCV图像处理——实现直线检测
2020/10/23 Python
HTML5 通过Vedio标签实现视频循环播放的示例代码
2020/08/05 HTML / CSS
SteelSeries赛睿官网:游戏外设和配件的领先制造商(耳机、键盘、鼠标和鼠标垫)
2018/06/17 全球购物
澳大利亚礼品篮网站:Macarthur Baskets
2019/10/14 全球购物
Lookfantastic阿联酋官网:英国知名美妆护肤购物网站
2020/05/26 全球购物
租车协议书范本
2014/04/22 职场文书
运动会演讲稿100字
2014/08/25 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
教师纪律作风整顿心得体会
2016/01/23 职场文书
2016年企业先进员工事迹材料
2016/02/25 职场文书
CSS实现九宫格布局(自适应)的示例代码
2022/02/12 HTML / CSS
Python用any()函数检查字符串中的字母以及如何使用all()函数
2022/04/14 Python