memcache的使用。函数库参见http://php.net/manual/zh/book.memcache.php

memcached的函数库参见http://php.net/manual/zh/book.memcached.php

使用的方法如下面的代码:

<?php
$memcache=new memcache(); $memcache->connect("127.0.0.1","11211");
$memcache->addServer("127.0.0.1","11212");
$memcache->addServer("127.0.0.1","11213");
//建议直接用addServer $flag=$memcache->flush();//标记所有项都失效
//此时缓存池中的数据还存在,并没有被删除,只是已经过期,不能再访问了(惰性删除)
var_dump($flag);//bool(true)
echo "<br>"; //添加一项name
$flag=$memcache->add("name","beyond",false,600);
var_dump($flag);
echo $memcache->get("name")."<br>";
//bool(true) beyond //添加一项age
$flag=$memcache->add("age","20",false,600);
var_dump($flag);
echo $memcache->get("age")."<br>";
// bool(true) 20 //尝试再次添加一项name,会失败
$flag=$memcache->add("name","hello",false,600);
var_dump($flag);
echo $memcache->get("name")."<br>";
// bool(false) beyond //尝试获取一个不存在的项
var_dump($memcache->get("abc"));
//false //尝试替换掉已存在name,name已存在,成功执行
$flag=$memcache->replace("name","hello",false,600);
var_dump($flag);
echo $memcache->get("name")."<br>";
// bool(true) hello //尝试替换掉不存在的sex,失败
$flag=$memcache->replace("sex","male",false,600);
var_dump($flag);
echo $memcache->get("male")."<br>";
// bool(false) //尝试用set对已存在的name重新设定值,成功
$flag=$memcache->set("name","hello",false,600);
var_dump($flag);
echo $memcache->get("name")."<br>";
// bool(true) hello //尝试用set对已存在的sex重新设定值,成功
$flag=$memcache->set("sex","male",false,600);
var_dump($flag);
echo $memcache->get("name")."<br>";
// bool(true) hello $memcache->delete("name");
echo $memcache->get("name")."<br>";
//false
?>

  可以使用connect()连接一个memcache服务器,但是建议直接使用addServer()。

  add($key,$value,$flag,$expire=0)向memcache中添加一项,第三个参数表示是否对数据进行压缩,第四个参数是该项的有效时间,单位为秒

  get($key)获得对应键的值,返回其内容,若没有该项或已经失效,则返回false.

  set和replace 与add的参数相同,前者表示强制设置,后者是替换已存在的项;

  他们的区别在于

  add 仅当存储空间中不存在键相同的数据时才保存
  replace 仅当存储空间中存在键相同的数据时才保存
  set 与add和replace不同,无论何时都保存

  flush是让服务器中的缓存数据全都过期,此时,数据依旧存在,但是不可以再被访问,这是memcache的内部机制(惰性删除)。

<?php
$memcache=new memcache(); $memcache->connect("127.0.0.1","11211");
$memcache->addServer("127.0.0.1","11212");
$memcache->addServer("127.0.0.1","11213"); $memcache->flush(); //添加一项
$memcache->add("num",1,false,600);
echo $memcache->get("num");//1 //自增1
$memcache->increment("num");
echo $memcache->get("num");//2 //自增3
$memcache->increment("num",3);
echo $memcache->get("num");//5 //自减3
$memcache->decrement("num",3);
echo $memcache->get("num");//2 //自减3
$memcache->decrement("num",3);
echo $memcache->get("num");//0 $memcache->close();
?>

  increment($key,$step=1)让$key所对应的值自增$step(默认自增1)

  decrement($key,$step=1)让$key所对应的值自减$step(默认自减1),但是自减之后的值不会小于0。

  注意memcache或者memcached 和redis不同。redis中可以用incr命令不同,它的incr可以创建一个新的项,如果该项存在,则自增1,而如果该项不存在,则默认创建一项初始默认值为0,然后自增为1,;   memcache的incr则不能这样

学习memcache的更多相关文章

  1. SAE下的Memcache使用方法

    SAE里面有Memcache,可以较大幅度改善数据库的鸭梨~ 之前一直想学习Memcache,却愁于不知如何下手,对这个名词完全没有概念,同时在SAE的文档里面,也很少对于Memcache的使用教程~ ...

  2. 大型网站优化-memcache技术

    大型网站优化-memcache技术 memory+cache 内存缓存 memcache简介 memcache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发 ...

  3. Memcache未授权访问漏洞利用及修复

    Memcached是一套分布式的高速缓存系统.它以Key-Value(键值对)形式将数据存储在内存中,这些数据通常是应用读取频繁的.正因为内存中数据的读取远远大于硬盘,因此可以用来加速应用的访问.本文 ...

  4. 《Memcache学习总结》[PDF]发布

    <Memcache学习总结>[PDF]发布 百度网盘共享: http://pan.baidu.com/s/1mgvayQO  版本号: V1.2 最后跟新: 2015-04-01 讨论组: ...

  5. memcache/redis 缓存学习笔记

    0.redis和memcache的区别 a.redis可以存储除了string之外的对象,如list,hash等 b.服务器宕机以后,redis会把内存的数据持久化到磁盘上,而memcache则不会 ...

  6. Memcache的一些学习

    Memcache的一些学习 首先,Memcache是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态.数据库驱动 ...

  7. memcache学习资料

    memcached是国外社区网站LiveJournal团队开发,通过缓存数据库查询结果,减少数据库访问次数,从而提高动态web站点性能.官方站点 http://memcached.org/memcac ...

  8. memcache的学习路线图

     memcache学习材料 //memcache自带的github 上的 wiki     //席剑飞 Memcache(MC)系列 1~8系列 评注: memcache系统写的最深的一博客,建议一读 ...

  9. php之memcache学习

    php之memcache学习 简介: memcache是一个分布式高速缓存系统. 分布式是说可以部署在多台服务器上,实现集群效果: 高速是因为数据都是维护在内存中的: 特点和使用场景: 1.非持久化存 ...

随机推荐

  1. 4.11Python数据处理篇之Matplotlib系列(十一)---图例,网格,背景的设置

    目录 目录 前言 (一)图例legend 1.默认不带参数的图例 2.添加参数的图例 3.将图例移动到框外 (二)网格grid 1.说明 2.源代码: 3.输出效果 (三)背景axses 1.设置全局 ...

  2. Docker: docker image常用命令实战

    #docker列出镜像[root@192 ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEnginx latest 881bd08c0b08 ...

  3. 近期Python学习笔记

    近期Python 学习笔记--一篇文入门python 作者:Pleiades_Antares(www.cnblogs.com/irischen) 写在前面的话 想学Python已经许久,一年多以前(应 ...

  4. 我的BRF+自学教程(三):动态技术

    开发者们可以在编程中使用各种动态技术,比如RTTS,比如通过动态的类创建和多态来实现功能的平滑扩展.BRF+开发中也存在一些动态手段.本文将介绍3种不同场景下的动态实践方式.其中第一种是纯配置的,第二 ...

  5. SQL TOP 子句

    TOP 子句 TOP 子句用于规定要返回的记录的数目. 对于拥有数千条记录的大型表来说,TOP 子句是非常有用的. 注释:并非所有的数据库系统都支持 TOP 子句. SQL Server 的语法: S ...

  6. centos7下kubernetes(2。kubernetes---start,重要概念)

    Cluster cluster是计算,存储和网络资源的集合,kubernetes是利用这些资源运行各种基于容器的应用 Master Master是cluster的大脑,他的主要职责是调度,即决定应用在 ...

  7. 【转】iOS-浅谈revoke证书对App的影响

    参考资料:证书-来自苹果官方的介绍 revoke证书对生产.测试环境的影响(1)revoke生产环境证书是不会影响已上架的app. (2)revoke开发环境证书,则安装过该证书的app的用户将无法打 ...

  8. 4939-Agent2-洛谷

    传送门 emm... 这次没有原题了 (因为我懒) 就是一道很简单的树状数组 真的很简单很简单 只用到了一点点的差分 注意注意: 只用树状数组,不用差分会t掉的 所以.. 我不仅t了 还wa了 emm ...

  9. Python排序算法——插入排序

    有趣的事,Python永远不会缺席! 如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10787464.html 一.插入排序(Inse ...

  10. face detection[HR]

    该模型hybrid-resolution model (HR),来自<finding tiny faces>,时间线为2016年12月 0 引言 虽然大家在目标识别上有了较好的进步,可是检 ...