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类的使用 实例代码讲解
Dec 28 PHP
php连接数据库代码应用分析
May 29 PHP
php 常用算法和时间复杂度
Jul 01 PHP
PHP加密扩展库Mcrypt安装和实例
Nov 10 PHP
php格式化金额函数分享
Feb 02 PHP
php检查日期函数checkdate用法实例
Mar 19 PHP
微信自定义菜单的处理开发示例
Apr 16 PHP
php发送邮件的问题详解
Jun 22 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
Mar 20 PHP
调用WordPress函数统计文章访问量及PHP原生计数器的实现
Mar 21 PHP
EarthLiveSharp中cloudinary的CDN图片缓存自动清理python脚本
Apr 04 PHP
php array_map()函数实例用法
Mar 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
php 静态化实现代码
2009/03/20 PHP
PHP把网页保存为word文件的三种方法
2014/04/01 PHP
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
2011/04/27 Javascript
Javascript无阻塞加载具体方式
2013/06/28 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
js 一个关于图片onload加载的事
2013/11/10 Javascript
基于JS实现密码框(password)中显示文字提示功能代码
2016/05/27 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
2017/01/04 Javascript
nodeJs链接Mysql做增删改查的简单操作
2017/02/04 NodeJs
jQuery插件autocomplete使用详解
2017/02/04 Javascript
解决nodejs中使用http请求返回值为html时乱码的问题
2017/02/18 NodeJs
从零开始学习Node.js系列教程三:图片上传和显示方法示例
2017/04/13 Javascript
微信小程序中使用ECharts 异步加载数据的方法
2018/06/27 Javascript
vue router总结 $router和$route及router与 router与route区别
2019/07/05 Javascript
JavaScript中BOM对象原理与用法分析
2019/07/09 Javascript
微信小程序实现3D轮播图效果(非swiper组件)
2019/09/21 Javascript
小程序实现横向滑动日历效果
2019/10/21 Javascript
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
Python天气预报采集器实现代码(网页爬虫)
2012/10/07 Python
python使用递归解决全排列数字示例
2014/02/11 Python
Python中单例模式总结
2018/02/20 Python
Pandas:DataFrame对象的基础操作方法
2018/06/07 Python
Python使用sax模块解析XML文件示例
2019/04/04 Python
python列表生成器迭代器实例解析
2019/12/19 Python
python爬虫模块URL管理器模块用法解析
2020/02/03 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
2020/04/30 Python
基于Python的身份证验证识别和数据处理详解
2020/11/14 Python
台湾演唱会订票网站:StubHub台湾
2019/06/11 全球购物
师范大学音乐表演专业求职信
2013/10/23 职场文书
毕业生个人的求职信范文
2013/12/03 职场文书
大学生校园创业计划书
2014/02/08 职场文书
高二学年自我鉴定范文(2篇)
2014/09/26 职场文书
2015毕业寄语大全
2015/02/26 职场文书
公司表扬信格式
2015/05/04 职场文书
如何在Python中妥善使用进度条详解
2022/04/05 Python