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模板引擎SMARTY
Oct 09 PHP
风格模板初级不完全修改教程
Oct 09 PHP
php下使用iconv需要注意的问题
Nov 20 PHP
PHP spl_autoload_register实现自动加载研究
Dec 06 PHP
PHP的博客ping服务代码
Feb 04 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
Apr 25 PHP
解析thinkphp import 文件内容变量失效的问题
Jun 20 PHP
php中url传递中文字符,特殊危险字符的解决方法
Aug 17 PHP
php mysql数据库操作类(实例讲解)
Aug 06 PHP
PHP+RabbitMQ实现消息队列的完整代码
Mar 20 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
Oct 11 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
Oct 24 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
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
2008/11/18 PHP
深入apache host的配置详解
2013/06/09 PHP
关于PHP堆栈与列队的学习
2013/06/21 PHP
PHP输出缓存ob系列函数详解
2014/03/11 PHP
30个php操作redis常用方法代码例子
2014/07/05 PHP
比较简单的一个符合web标准的JS调用flash方法
2007/11/29 Javascript
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
2010/03/05 Javascript
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
2010/03/12 Javascript
javascript中强制执行toString()具体实现
2013/04/27 Javascript
Ajax提交与传统表单提交的区别说明
2014/02/07 Javascript
一个JavaScript处理textarea中的字符成每一行实例
2014/09/22 Javascript
JavaScript实现查找字符串中第一个不重复的字符
2014/12/29 Javascript
js console.log打印对像与数组用法详解
2016/01/21 Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
2016/12/12 Javascript
Javascript基础回顾之(一) 类型
2017/01/31 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
2017/07/23 Javascript
基于jQuery Ajax实现下拉框无刷新联动
2017/12/06 jQuery
Vue 让元素抖动/摆动起来的实现代码
2018/05/31 Javascript
如何在js代码中消灭for循环实例详解
2018/07/29 Javascript
对vue中methods互相调用的方法详解
2018/08/30 Javascript
在RedHat系Linux上部署Python的Celery框架的教程
2015/04/07 Python
浅谈Python程序与C++程序的联合使用
2015/04/07 Python
利用Python读取txt文档的方法讲解
2018/06/23 Python
在python中对变量判断是否为None的三种方法总结
2019/01/23 Python
Python3.5内置模块之time与datetime模块用法实例分析
2019/04/27 Python
Python登录系统界面实现详解
2019/06/25 Python
pytorch GAN生成对抗网络实例
2020/01/10 Python
DjangoWeb使用Datatable进行后端分页的实现
2020/05/18 Python
村班子对照检查材料
2014/08/18 职场文书
文秘班元旦晚会活动策划方案
2014/08/28 职场文书
2015幼儿园庆元旦活动方案
2014/12/09 职场文书
工艺技术员岗位职责
2015/02/04 职场文书
2015年实习单位评语
2015/03/25 职场文书
解决MySQL存储时间出现不一致的问题
2021/04/28 MySQL
openstack中的rpc远程调用的方法
2021/07/09 Python
Java面试题冲刺第十九天--数据库(4)
2021/08/07 Java/Android