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. Linux端口映射,80端口映射到8080端口

    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080 其中eth0为外网网卡名称 ipt ...

  2. 解决Eclipse点击运行后控制台不能自动弹出的问题

    解决方案: 选择Window-->Preferences-->Run.Debug-->Console 勾选"Show when program writest to sta ...

  3. (转载)关于usr/bin/ld: cannot find -lxxx问题总结

    usr/bin/ld: cannot find -lxxx问题总结 linux下编译应用程序常常会出现如下错误:   /usr/bin/ld: cannot find -lxxx        意思是 ...

  4. LeetCode算法题-Count Primes(Java实现)

    这是悦乐书的第190次更新,第193篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第49题(顺位题号是204).计算小于非负数n的素数的数量.例如: 输入:10 输出:4 ...

  5. 【递推】ZSC1074: 数学、阿牛的EOF牛肉串

    Description 今年的ACM暑期集训队一共有18人,分为6支队伍.其中有一个叫做EOF的队伍,由04级的阿牛.XC以及05级的COY组成.在共同的集训生活中,大家建立了深厚的友谊,阿牛准备做点 ...

  6. python抓取月光博客的全部文章而且依照标题分词存入mongodb中

    猛击这里:python抓取月光博客的全部文章

  7. Tomcat配置(部分知识点)

    1.<Server>元素,shutdown属性表示关闭Server的指令:port属性表示Server接收shutdown指令的端口号,设为-1可以禁掉该端口 2.Connector的主要 ...

  8. 有时间了解一下Spark SQL parser的解析器架构

    1:了解大体架构 2:了解流程以及各个类的职责 3:尝试编写一个

  9. node.js读写文件

    关于node.js的读写操作,应用场景有很多.比如其中这样的一个场景,如何获取全局的token.这就涉及到写和读操作了. 写操作: var fs = require("fs"); ...

  10. ArrayList中ConcurrentModificationException

    java中两种基本的集合结构ArrayList和LinkedList底层有两种不同的存储方式实现,ArrayList为数组实现,属于顺序存储,LinkedList为链表实现,属于链式存储,在对Arra ...