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. JAVA之Math类常用数学运算记录

    Math中定义了许多的方法,且这些方法均为static类型,通过Math类就能直接调用. 调用形式:Math.方法名 例如,我要进行e运算,那么我直接调用Math.exp(double 类型 数值); ...

  2. LeetCode算法题-Best Time to Buy and Sell Stock II

    这是悦乐书的第173次更新,第175篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第32题(顺位题号是122).假设有一个数组,其中第i个元素是第i天给定股票的价格.设计 ...

  3. [福大软工] Z班 第4次成绩排行榜

    作业要求 http://www.cnblogs.com/easteast/p/7511234.html 评分细则 (1)博客--15分,分数组成如下: 随笔开头,给出结队两个同学的学号.PS:结对成员 ...

  4. JavaScript对象原型写法详解

        体现对象原型分步式写法 //原型分步式写法 //构造函数 function Person(){} //对象原型 Person.prototype.name = 'Avensatr'; Pers ...

  5. 爬楼梯的golang实现

    假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 输入: 输出: 解释: 有两种方法可以爬到楼顶. ...

  6. python 逻辑判断 循环练习题

    # 1.判断下列列逻辑语句句的True,False.# 1)1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 ...

  7. 配置DispatcherServlet应该写/还是/*

    相亲怎么做 web应用需要放在Tomcat容器中才能启动,Tomcat容器内有一个默认的web.xml文件,在自己项目中配置的XML文件都是继承自Tomcat中的全局XML文件并重写其中相应配置,这种 ...

  8. 使用Nginx实现反向代理

    一.代理服务器 1.什么是代理服务器 代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务 ...

  9. windows server 2012 安装 VC14(VC2015) 安装失败解决方案

    原文地址:https://www.cnblogs.com/huoniao/articles/6186021.html 系统环境如下:cmd命令行-输入 systeminfo 如下图 - The VC1 ...

  10. >/dev/null 2>&1和2>&1 >/dev/null区别

    >/dev/null 2>&1和2>&1 >/dev/null区别 >/dev/null 2>&1 //会将标准输出,错误输出都重定向至/d ...