W: Memcached是神魔?

Q:Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。

W:原理图

Q:如下

1浏览器    2 服务器   3  数据库    4  memcache缓存

1---》2--》判断缓存是否有数据

---分支1--》无缓存数据----》3---》同时传给服务器(3)  和    memcache (4)一份---》浏览器(1)

--分支2--》有缓存数据 读取memcache(4)--.返回浏览器(1)

W:工作流程是怎样的?

Q:

1:第一次访问

浏览器访问---》后台获取数据  --》同时向浏览器  和  memcached   双方各发一份数据-----》  用户获取数据

2:用户不是第一次访问

浏览器访问---》memcached  获取数据(如果有memcached数据,直接调用。没有的话,去数据库拿) 》  用户获取数据

W:MEMCACHE  安装

Q:

1:使用管理员身份运行cmd 并切换到上一步解压后的目录下, 运行命令 memcached -d install 来把memcache安装为系统服务,

2:运行命令 memcached -d start 来启动服务

3:运行命令 memcached -h 来验证安装是否成功

W: 缓存MEMCACHE php调用

Q:第一步   新建一个文件memcache(配置现骨干信息,生成memcache实例)

class memcachePool{

private static $instance;

private $memcacheList = array();

private function __construct(){

}

public static function getInstance(){

if(self::$instance != null)

return self::$instance;

self::$instance = new memcachePool();

return self::$instance;

}

/**

* get memcache object from pool

* @param  [type] $host 服务器

* @param  [type] $port 端口

* @param  [type] $flag 控制是否使用持久化连接。默认TRUE

* @return [type]

*/

public function getMemcache($host,$port,$flag){

if(isset($this->memcacheList[$host.$port]))

return $this->memcacheList[$host.$port];

$memcache = new Memcache();

// 向连接池中添加一个memcache服务器

$memcache->addServer($host,$port,$flag);

//开启大值自动压缩,第一个参数表示处理数据大小的临界点,第二个参数表示压缩的比例,默认为0.2

$memcache->setCompressThreshold(2000,0.2);

$this->memcacheList[$host.$port] = $memcache;

return $memcache;

}

}

2:新加一个常用方法类

class dlufMemcache{

private $memcache = null;

function __construct($host,$port){

$this->memcache = memcachepool::getInstance()->getMemcache($host,$port,true);

}

/**

* memcache set value

* @param [type]  $key 键

* @param [type]  $value 值

* @param integer $expire  到期的时间,如果此值设置为0表明此数据永不过期

* @param integer $flag 标志位 使用MEMCACHE_COMPRESSED指定对值进行压缩(使用zlib)

* @param [type]  $serializetype

*/

public function set($key,$value,$expire=0,$flag=0,$serializetype=null){

if($serializetype == 'json' && is_array($value)){

$value = json_encode($value);

}

$this->memcache->set($key,$value,$flag,$expire);

}

/**

* 从服务端查找元素

* @param  [type] $key

* @return [type]

*/

public function get($key){

return $this->memcache->get($key);

}

/**

* 增加一个条目到缓存服务器

* @param [type]  $key

* @param [type]  $value

* @param integer $expire

* @param integer $flag

* @param [type]  $serializetype

*/

public function add($key,$value,$expire=0,$flag=0,$serializetype=null){

if($serializetype == 'json' && is_array($value)){

$value = json_encode($value);

}

$ret = $this->memcache->add($key,$value,$flag,$expire);

return $ret;

}

/**

* 清洗(删除)已经存储的所有的元素

* @return [type]

*/

public function flush(){

return $this->memcache->flush();

}

/**

*  从服务端删除一个元素

* @param  [type] delete 参数:key要删除的元素的key 删除该元素的执行时间 timeout如果值为0,则该元素立即删除。

* @return [type]

*/

public function delete($key){

$ret = $this->memcache->delete($key,0);

return $ret;

}

}

把增删改查方法写进如方便调用。

W:使用缓存   ?

Q:

····1实例化memcache类

·····$memcache = new dlufMemcache('127.0.0.1',11211) ;

····2.调取预先写好的方法

·$memcache->set('memcache','come on dluf&baidu !!!!!!');
 
·3.获取缓存数据
·$ret = $memcache->get('memcache');
 
·4.打印出数据
·echo print_r($ret,true);
 

缓存 memcache 小白笔记的更多相关文章

  1. MVC缓存OutPutCache学习笔记 (二) 缓存及时化VaryByCustom

    <MVC缓存OutPutCache学习笔记 (一) 参数配置> 本篇来介绍如何使用 VaryByCustom参数来实现缓存的及时化.. 根据数据改变来及时使客户端缓存过期并更新.. 首先更 ...

  2. MVC缓存OutPutCache学习笔记 (一) 参数配置

    OutPutCache 参数详解 Duration : 缓存时间,以秒为单位,这个除非你的Location=None,可以不添加此属性,其余时候都是必须的. Location : 缓存放置的位置; 该 ...

  3. python运维开发(十一)----python操作缓存memcache、redis

    内容目录: 缓存 memcache redis memcache Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数 ...

  4. 使用缓存Memcache存储access_token

    接上篇文本,千辛万苦终于拿到了access_token. 正常情况下access_token有效期为7200秒,重复获取将导致上次获取的access_token失效.目前,获取access_token ...

  5. 分布式缓存Memcache和Redis

    引言 针对于如今计算机的CPU和网络设施,相应用程序来说,运行效率的瓶颈.已经不是代码的长度(实现同一个功能)和带宽了,而是,代码訪问资源的过程.即:让我们的程序慢下来的罪魁祸首就是IO操作. 程序从 ...

  6. 使用缓存Memcache存储更新微信access token

    关键字:Memcache access_token 更新 存储 7200 本文介绍如何使用缓存Memcache存储及更新 access token的方法. 一.Access Token access_ ...

  7. 【系统架构】缓存Memcache 使用原子性操作add,实现并发锁

    原文地址 memcache中Memcache::add()方法在缓存服务器之前不存在key时, 以key作为key存储一个变量var到缓存服务器.我们使用add来向服务器添加一个键值对应,如果成功则添 ...

  8. [nosql之缓存memcache]安装篇LInux for Windows

    首先呢在PHP开发的过程中会用到很多缓存服务,从而提升访问质量或者临时存储一些数据. 优点 结构简单,读取速度快,易于维护.还有一些特性memcache redis mongodb都可以用来做为缓存用 ...

  9. Memcache学习笔记

    以下内容大部分来自网络,小部分是本人遇到的问题融合后的记录. 先贴一段涨姿势~ Memcache是什么 Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全 ...

随机推荐

  1. 【洛谷P2022】有趣的数

    有趣的数 题目链接 首先求出1~k中有多少个在k前面的数的个数,若>m,则无解 比如12345,从第一位开始, 1 0~1 共2个 1-0+1 12  10~12共3个    12-10+1 1 ...

  2. 双T滤波电路用于PWM方式DAC的分析

    双T滤波电路用于PWM方式DAC的分析   之前做温度控制的时候,用到了PWM到DAC的转化,PWM方波,经过滤波,怎么就变成了直流的信号,之前我也很困惑这一点.用频域的方法可以近似说明,但是严格的数 ...

  3. Number & Math

    Java Number & Math 类 一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte.int.long.double 等. 实例 int a = 5000; floa ...

  4. 更新UI放在主线程的原因

    1.在子线程中是不能进行UI 更新的,而可以立刻更新的原因是:子线程代码执行完毕了,又自动进入到了主线程,这中间的时间非常的短,让我们误以为子线程可以更新UI.如果子线程一直在运行,则无法更新UI,因 ...

  5. hdu_4135_Co-prime

    Given a number N, you are asked to count the number of integers between A and B inclusive which are ...

  6. Django在windows系统下安装详情

    1. Django 下载地址:https://www.djangoproject.com/download/ 2. 解压到跟python安装目录平级目录: 如下图: 3.通过cmd控制台安装djang ...

  7. DBUtils 学习使用

    DBUtils 学习使用 commons-dbutils简介 commons-dbutils是Apache组织提供的一个开源JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbuti ...

  8. 5 替换空格 JavaScript

    题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy.   原来一个空格字符,替换之后 ...

  9. 原型 - 实现自己的jQuery

    每个第一次使用jq的开发者都感到惊叹,jq的$太神奇了,究竟是怎么做到的使用$控制dom 赞叹前人之余,探究其本源才是前端开发者应该做的事,社区常常说,不要重复造轮子, 可是啊,连轮子都造不出来,又怎 ...

  10. thinkphp5 toArray()报错

    //DB操作返回是数组.模型直接操作返回是对象 //对象类型转换数组 //打开 database.php 增加或修改参数 'resultset_type' => '\think\Collecti ...