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作的文本留言本的例子(四)
Oct 09 PHP
php 用checkbox一次性删除多条记录的方法
Feb 23 PHP
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
Jan 06 PHP
浅谈apache和nginx的rewrite的区别
Feb 22 PHP
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
Apr 22 PHP
深入探讨<br />和 \r\n两者有什么区别??
Jun 05 PHP
php中把美国时间转为北京时间的自定义函数分享
Jul 28 PHP
利用PHP如何实现Socket服务器
Sep 23 PHP
php邮件发送的两种方式
Apr 28 PHP
Laravel学习教程之View模块详解
Sep 18 PHP
PHP实现微信红包金额拆分试玩的算法示例
Apr 07 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
Mar 29 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中文件缓存转内存缓存的方法
2011/12/06 PHP
php一些错误处理的方法与技巧总结
2013/08/10 PHP
PHP使用mysqldump命令导出数据库
2015/04/14 PHP
Yii模型操作之criteria查找数据库的方法
2016/07/15 PHP
PHP网站自动化配置的实现方法(必看)
2017/05/27 PHP
PHP程序员必须知道的两种日志实例分析
2020/05/14 PHP
Js中获取frames中的元素示例代码
2013/07/30 Javascript
jQuery中复合属性选择器用法实例
2014/12/31 Javascript
js实现漂浮回顶部按钮实例
2015/05/06 Javascript
js实现浮动在网页右侧的简洁QQ在线客服代码
2015/09/04 Javascript
JavaScript在网页中画圆的函数arc使用方法
2015/11/13 Javascript
jquery实现简单的表单验证
2015/11/17 Javascript
在React框架中实现一些AngularJS中ng指令的例子
2016/03/06 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
2017/06/12 Javascript
详解React Native网络请求fetch简单封装
2017/08/10 Javascript
vue采用EventBus实现跨组件通信及注意事项小结
2018/06/14 Javascript
详解vue.js下引入百度地图jsApi的两种方法
2018/07/27 Javascript
JavaScript如何处理移动端拍摄图片旋转问题
2019/11/16 Javascript
JS实现滑动导航效果
2020/01/14 Javascript
react使用CSS实现react动画功能示例
2020/05/18 Javascript
Python中统计函数运行耗时的方法
2015/05/05 Python
python字典键值对的添加和遍历方法
2016/09/11 Python
你应该知道的python列表去重方法
2017/01/17 Python
Python3使用turtle绘制超立方体图形示例
2018/06/19 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
2019/10/14 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
Python如何定义有默认参数的函数
2020/08/10 Python
CSS3实现的闪烁跳跃进度条示例(附源码)
2013/08/19 HTML / CSS
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
Godiva巧克力英国官网:比利时歌帝梵巧克力
2018/08/28 全球购物
美国轮胎网站:Priority Tire
2018/11/28 全球购物
JAVA软件工程师测试题
2014/07/25 面试题
素食餐饮项目创业计划书
2014/02/02 职场文书
《守株待兔》教学反思
2014/03/01 职场文书
MySQL pt-slave-restart工具的使用简介
2021/04/07 MySQL