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 文件类型判断代码
Mar 13 PHP
php.ini中date.timezone设置分析
Jul 29 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
Nov 17 PHP
php实现的通用图片处理类
Mar 24 PHP
php编写的抽奖程序中奖概率算法
May 14 PHP
PHP获得数组交集与差集的方法
Jun 10 PHP
php检查字符串中是否有外链的方法
Jul 29 PHP
PHP中读取文件的几个方法总结(推荐)
Jun 03 PHP
CI框架表单验证实例详解
Nov 21 PHP
php中分页及SqlHelper类用法实例
Jan 12 PHP
thinkPHP框架实现的简单计算器示例
Dec 07 PHP
PHP实现简单日历类编写
Aug 28 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怎样调用MSSQL的存储过程
2006/10/09 PHP
10 个经典PHP函数
2013/10/17 PHP
php-perl哈希算法实现(times33哈希算法)
2013/12/30 PHP
PHP中copy on write写时复制机制介绍
2014/05/13 PHP
yii权限控制的方法(三种方法)
2015/12/28 PHP
PHP 7.0.2 正式版发布
2016/01/08 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
2016/03/14 PHP
不常用但很实用的PHP预定义变量分析
2019/06/25 PHP
Javascript 代码也可以变得优美的实现方法
2009/06/22 Javascript
window.parent调用父框架时 ie跟火狐不兼容问题
2009/07/30 Javascript
用jQuery模拟select下拉框的简单示例代码
2014/01/26 Javascript
js控制href内容的连接内容的变化示例
2014/04/30 Javascript
js操作iframe父子窗体示例
2014/05/22 Javascript
js纯数字逐一停止显示效果的实现代码
2016/03/16 Javascript
Angular.js如何从PHP读取后台数据
2016/03/24 Javascript
Vue.js报错Failed to resolve filter问题的解决方法
2016/05/25 Javascript
JQuery的常用选择器、过滤器、方法全面介绍
2016/05/25 Javascript
js生成随机数(指定范围)的实例代码
2016/07/10 Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
2016/07/22 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
NodeJS配置HTTPS服务实例分享
2017/02/19 NodeJs
详解vue2.0组件通信各种情况总结与实例分析
2017/03/22 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
2018/01/10 Javascript
js微信分享接口调用详解
2019/07/23 Javascript
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
Python 实现opencv所使用的图片格式与 base64 转换
2020/01/09 Python
Nordgreen英国官网:斯堪的纳维亚设计师手表
2018/10/24 全球购物
Desigual美国官方网站:西班牙服装品牌
2019/03/29 全球购物
应届行政管理专业个人自我评价
2013/12/28 职场文书
挂职自我鉴定
2014/02/26 职场文书
新教师个人工作总结
2015/02/06 职场文书
2015年端午节活动总结
2015/02/11 职场文书
团员年度个人总结
2015/02/26 职场文书
《1942》观后感
2015/06/08 职场文书
Python排序算法之插入排序及其优化方案详解
2021/06/11 Python
python微信智能AI机器人实现多种支付方式
2022/04/12 Python