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
解析file_get_contents模仿浏览器头(user_agent)获取数据
Jun 27 PHP
zend Framework中的Layout(模块化得布局)详解
Jun 28 PHP
php header功能的使用
Oct 28 PHP
PHP使用ob_start生成html页面的方法
Nov 07 PHP
php中静态类与静态变量用法的区别分析
Jan 15 PHP
PHP异常处理浅析
May 12 PHP
浅谈PHP中的数据传输CURL
Sep 06 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
Jun 09 PHP
PHP标准库(PHP SPL)详解
Mar 16 PHP
PHP预定义接口――Iterator用法示例
Jun 05 PHP
PHP大文件及断点续传下载实现代码
Aug 18 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中__get()和__set()的用法实例详解
2013/06/04 PHP
使用PHP获取当前url路径的函数以及服务器变量
2013/06/29 PHP
centos7上编译安装php7以php-fpm方式连接apache
2018/11/08 PHP
js 多浏览器分别判断代码
2010/04/01 Javascript
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
2010/08/12 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
2013/09/02 Javascript
改变隐藏的input中value值的方法
2014/03/19 Javascript
js控制网页背景音乐播放与停止的方法
2015/02/06 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
2016/02/28 Javascript
Bootstrap+jfinal退出系统弹出确认框的实现方法
2016/05/30 Javascript
nodejs 的 session 简单使用
2016/06/06 NodeJs
jQuery中ScrollTo用法示例
2016/09/04 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
2017/03/31 Javascript
Vue 实用分页paging实例代码
2017/04/12 Javascript
Express之get,pos请求参数的获取
2017/05/02 Javascript
使用Vue-cli 3.0搭建Vue项目的方法
2018/06/07 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
2019/03/16 Javascript
使用node搭建自动发图文微博机器人的方法
2019/03/22 Javascript
JavaScript生成一个不重复的ID的方法示例
2019/09/16 Javascript
Nodejs在局域网配置https访问的实现方法
2020/10/17 NodeJs
Python struct.unpack
2008/09/06 Python
用Python制作在地图上模拟瘟疫扩散的Gif图
2015/03/31 Python
基于Python实现一个简单的银行转账操作
2016/03/06 Python
深入解析Python中的descriptor描述器的作用及用法
2016/06/27 Python
python读写csv文件的方法
2019/08/13 Python
Windows下Sqlmap环境安装教程详解
2020/08/04 Python
python使用re模块爬取豆瓣Top250电影
2020/10/20 Python
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
岗位职责的含义
2013/11/17 职场文书
社区国庆节活动方案
2014/02/05 职场文书
拾金不昧锦旗标语
2014/06/27 职场文书
幼儿园教研工作总结2015
2015/05/12 职场文书
Python字典和列表性能之间的比较
2021/06/07 Python
MySQL开启事务的方式
2021/06/26 MySQL
mysql中整数数据类型tinyint详解
2021/12/06 MySQL