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 相关文章推荐
什么是MVC,好东西啊
May 03 PHP
php array_unique之后json_encode需要注意
Jan 02 PHP
php 目录遍历、删除 函数的使用介绍
Apr 28 PHP
PHP CLI模式下的多进程应用分析
Jun 03 PHP
基于php和mysql的简单的dao类实现crud操作功能
Jan 27 PHP
php中将一个对象保存到Session中的方法
Mar 13 PHP
php判断当前操作系统类型
Oct 28 PHP
IIS 7.5 asp Session超时时间设置方法
Apr 17 PHP
利用PHP_XLSXWriter代替PHPExcel的方法示例
Jul 16 PHP
Laravel学习教程之model validation的使用示例
Oct 23 PHP
PHP实现Redis单据锁以及防止并发重复写入
Apr 10 PHP
PHP实现的CURL非阻塞调用类
Jul 26 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
Terran历史背景
2020/03/14 星际争霸
用PHP为SHOPEX增加日志功能代码
2010/07/02 PHP
仿AS3实现PHP 事件机制实现代码
2011/01/27 PHP
PHP求小于1000的所有水仙花数的代码
2012/01/10 PHP
postfixadmin忘记密码后的修改密码方法详解
2016/07/20 PHP
php版微信小店调用api示例代码
2016/11/12 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
2019/08/06 PHP
js本身的局限性 别让javascript做太多事
2010/03/23 Javascript
window.open关于浏览器拦截问题分析及解决方法
2013/02/05 Javascript
JS中innerHTML和pasteHTML的区别实例分析
2016/06/22 Javascript
纯javascript版日历控件
2016/11/24 Javascript
基于bootstrap实现收缩导航条
2017/03/17 Javascript
JavaScript实现弹出广告功能
2017/03/30 Javascript
vue与vue-i18n结合实现后台数据的多语言切换方法
2018/03/08 Javascript
vue源码解析之事件机制原理
2018/04/21 Javascript
node.js连接mysql与基本用法示例
2019/01/05 Javascript
详解基于Vue/React项目的移动端适配方案
2019/08/23 Javascript
Nodejs + sequelize 实现增删改查操作
2020/11/07 NodeJs
[31:29]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第一场 12.20
2020/12/23 DOTA
用Python写的图片蜘蛛人代码
2012/08/27 Python
零基础写python爬虫之打包生成exe文件
2014/11/06 Python
Django查询数据库的性能优化示例代码
2017/09/24 Python
python实现两个文件合并功能
2018/04/01 Python
使用Python编写Prometheus监控的方法
2018/10/15 Python
pandas中DataFrame修改index、columns名的方法示例
2019/08/02 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
2019/08/12 Python
在Python中预先初始化列表内容和长度的实现
2019/11/28 Python
Django ORM实现按天获取数据去重求和例子
2020/05/18 Python
python要安装在哪个盘
2020/06/15 Python
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
巴西图书和电子产品购物网站:Saraiva
2017/06/07 全球购物
《画家乡》教学反思
2014/04/22 职场文书
妇联领导班子剖析材料
2014/08/21 职场文书
委托培训协议书
2014/11/17 职场文书
民事答辩状范本
2015/05/21 职场文书
Python下opencv库的安装过程及问题汇总
2021/06/11 Python