在 wamp 环境下进行测试:WAMPSERVER 2.2(Windows 7 + Apache 2.2.21 + PHP 5.3.10 + memcache 3.0.8 + Memcached 1.4.24)

在本地开启 Memcached 服务:

简单例子:

<?php
//创建Memcache对象
$mc = new Memcache();
//连接Memcached服务器
$mc->connect('127.0.0.1', 11211);
//存储数据
$mc->set('name', 'dee', 0, 20);//0:不适用zLib压缩 20:缓存20秒
//获取数据
$name = $mc->get('name');
var_dump($name);

输出:

使用 telnet 客户端连接 Memcached 服务器,获取缓存数据:

20 秒后获取不到 key 为 name 的值。

简单例子2:

<?php
//创建Memcache对象
$mc = new Memcache();
//连接Memcached服务器
$mc->connect('127.0.0.1', 11211);
//存储数据
$mc->set('name', 'dee', 0, 20);//0:不适用zLib压缩 20:缓存20秒
//获取数据
$name = $mc->get('name');
var_dump($name); //删除数据
$mc->delete('name');
$name = $mc->get('name');
var_dump($name); //强制刷新全部缓存,即清空Memcached服务器
$mc->flush(); //断开与Memcached服务器的连接
$mc->close();

输出:

简单例子3:

Memcache::getStats 获取服务器的统计信息,返回一个关联数组形式的服务器统计信息,值是统计信息的值,可以使用:reset,malloc,maps,cachedump,slabs,items,sizes,例:

<?php
//创建Memcache对象
$mc = new Memcache();
//连接Memcached服务器
$mc->connect('127.0.0.1', 11211);
//获取服务器的统计信息
$serverStats = $mc->getStats('slabs');
var_dump($serverStats);

输出:

Memcached 在存储数据时使用 Slab 内存分配算法,这种算法可以减少生成内存碎片,提高内存使用率。

又如:

<?php
//创建Memcache对象
$mc = new Memcache();
//连接Memcached服务器
$mc->connect('127.0.0.1', 11211);
//获取服务器的统计信息
$serverStats = $mc->getStats('items');
var_dump($serverStats);

输出:

又如:

<?php
//创建Memcache对象
$mc = new Memcache();
//连接Memcached服务器
$mc->connect('127.0.0.1', 11211);
//获取服务器的统计信息
$serverStats = $mc->getStats('sizes');
var_dump($serverStats);

输出:

简单例子4:

Memcache::getServerStatus,获取一个服务器的在线(1) / 离线状态(0)

<?php
//创建Memcache对象
$mc = new Memcache();
//连接Memcached服务器
$mc->connect('127.0.0.1', 11211);
//获取服务器的统计信息
$serverStatus = $mc->getServerStatus('127.0.0.1', 11211);
var_dump($serverStatus);

输出:int 1

说明:第一个参数是服务器域名或 IP ,第二个参数是端口,默认 11211

简单例子5:

通过把从数据库查询的结果保存到 Memcached 中,下次访问直接从 Memcached 中获取,从而减轻数据库的负担

<?php
//创建Memcache对象
$mc = new Memcache();
//连接Memcached服务器
$mc->connect('127.0.0.1', 11211); $id = (int)$_GET['id'];
$sql = 'select * from message where id = '.$id;
$key = md5($sql);
//判断数据库查询结果是否已经缓存到Memcached服务器中
$datas = $mc->get($key);
if(!$datas) {
//没有获取到缓存数据,则直接从MySQL中查询
$conn = mysql_connect('127.0.0.1', 'root', '');
mysql_select_db('msg');
$result = mysql_query($sql);
while($row = mysql_fetch_object($result)){
$datas[] = $row;
}
//将结果集保存到Memcached中
$mc->set($key, $datas);
}
var_dump($datas);

输出:

说明:通过 md5() 把要查询的 SQL 语句加密成一个唯一的 key,使用该 key 去 Memcached 中查询,如果已经有该缓存,则直接返回,如果没有,则去 MySQL 数据库中查询后返回结果并缓存到 Memcached 服务器中。

在 telnet 客户端中列出所有的 key:

#列出所有的 keys
stats items //这条是命令
STAT items:4:number 1
STAT items:4:age 347
STAT items:4:evicted 0
STAT items:4:evicted_nonzero 0
STAT items:4:evicted_time 0
STAT items:4:outofmemory 0
STAT items:4:tailrepairs 0
STAT items:4:reclaimed 0
STAT items:4:expired_unfetched 0
STAT items:4:evicted_unfetched 0
STAT items:4:crawler_reclaimed 0
STAT items:4:crawler_items_checked 0
STAT items:4:lrutail_reflocked 0
END #通过 item id 获取 key,本例中是 4
#第 2 个参数为列出的长度, 0 代表全部列出
stats cachedump 4 0 //这条是命令
ITEM 378adbfe4fe7b6a2bbcad92d670db3c9 [91 b; 1443880812 s]
END #通过 get 获取 key 值
get 378adbfe4fe7b6a2bbcad92d670db3c9 //这条是命令
VALUE 378adbfe4fe7b6a2bbcad92d670db3c9 1 91
a:1:{i:0;O:8:"stdClass":3:{s:2:"id";s:1:"1";s:7:"content";s:5:"hello";s:4:"flag";s:1:"3";}}
END

如图所示,PHP 的 memcache 扩展会自动进行 serialize 和 unserialize ,因此可以直接存储数组或者对象。

参考:《Memcache 查看列出所有key方法

Memcached 笔记与总结(4)memcache 扩展的使用的更多相关文章

  1. CentOS安装memcached及配置php的memcache扩展

    遇到的问题: 这个问题主要是linux服务器安装memcached服务后,phpinfo信息没有memcache扩展,所以主要是给php安装memcache扩展,教程中是安装memcache扩展,我认 ...

  2. 安装memcached服务 和 php 安装memcache扩展

    这是所有的命令,至于哪个命令是干嘛的自己悟去吧  ,顺便穿插一些知识点 安装libevent cd /home/ wget  http://www.monkey.org/~provos/libeven ...

  3. windows下安装Memcached服务器,PHP的memcache扩展

    Memcahed 介绍:Memcahed是一个内存缓存服务器 (类似MySQL服务器) 作用:提高web的响应速度,例如缓存数据库查询结果 原理:把数据存到内存中 (提高速度的原因) 教程相关 系统: ...

  4. memcache服务器端及PHP memcache扩展的安装(转载)

    memcache服务器端的安装(windows版)    1.下载memcached软件 32位下载地址: memcached-win32-1.4.4-14.zip(直接下载) 下载页面: 64位下载 ...

  5. Centos安装Memcached和(Nginx)Memcache扩展详细教程

    下载memadmin,下载地址:http://www.junopen.com/memadmin/ 并在IIS新建站点. 测试地址:http://wap.yousawang.com/mem , 1.重启 ...

  6. linux安装memcached及memcache扩展

    一.安装libevent函数库 下载地址:http://libevent.org 默认被安装到:/usr/local/lib目录下 安装memcached之前需要先安装libevent函数库. 可以通 ...

  7. linux上安装php7 memcache扩展 和 安装服务端memcached

    linux上安装memcached不算太困难.唯一让本人感到困难的是 php7的memcache扩展安装.真的蛋疼! 先说安装服务端 memcached 1. 首先安装Libevent事件触发管理器. ...

  8. Centos7 编译安装 Nginx PHP Mariadb Memcache扩展 ZendOpcache扩展 (实测 笔记 Centos 7.0 + Mariadb 10.1.9 + Nginx 1.9.9 + PHP 5.5.30)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1503-01.iso 安装步骤: 1.准备 1.1 ...

  9. linux安装memcached和php的memcache扩展 (已使用)

    所需软件libevent-1.4.6-stable.tar.gz (http://monkey.org/~provos/libevent/)memcache-2.2.3.tgz (http://pec ...

随机推荐

  1. .net学习之新语法学习(匿名类和匿名方法,扩展方法,系统内置委托,Lambda表达式和linq等)

    1.自动属性 Auto-Implemented Properties 2.隐式类型 var  var变量不能作为全局变量使用,因为不能在编译时确定类型 3.参数默认值 和 命名参数 4.对象初始化器 ...

  2. GDB调试笔记

    参考资料:GDB调试精粹及使用实例 # 调试实例 #include <iostream> #include <cstring> using namespace std; ][] ...

  3. PHP定时执行任务的实现

    config.php<?php ; ?> cron.phpignore_user_abort(););*;// 每隔半小时运行 do{ $run = include 'config.php ...

  4. GDUT 校赛02 dp回文串

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABSkAAAIhCAIAAAAtmainAAAgAElEQVR4nOzdfaxkd33n+ZJacstqa3 ...

  5. 使用MyEclipse Swing/Matisse

     经常使用JBuilder开发工具的人都知道,在JBuilder中开发Swing应用程序是比较方便的,虽然比不上曾经红遍一时的Visual Basic,但开发界面的工作确实被大大简化了.     JB ...

  6. OUYA游戏开发核心技术剖析大学霸内部资料

    OUYA游戏开发核心技术剖析大学霸内部资料 试读地址:http://pan.baidu.com/s/1ntuql8t 介绍:本教程是一本进阶级的教材,它可以让读者在了解.熟悉了OUYA设备的基础上,开 ...

  7. 递推DP URAL 1260 Nudnik Photographer

    题目传送门 /* 递推DP: dp[i] 表示放i的方案数,最后累加前n-2的数字的方案数 */ #include <cstdio> #include <algorithm> ...

  8. VMware12版虚拟机怎么安装win7系统

    工具/原料   VMware workstation 12 windows7镜像ios系统文件 链接:http://pan.baidu.com/s/1c0YrDgG 密码:vna1 建立一个新的虚拟机 ...

  9. BZOJ4294 : [PA2015]Fibonacci

    斐波那契数列模$10^m$的循环节为$6\times10^m$,于是从低位到高位dfs即可. #include<cstdio> #include<cstring> #defin ...

  10. ZOJ 3494 (AC自动机+高精度数位DP)

    题目链接:  http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3494 题目大意:给定一些被禁止的BCD码.问指定范围内不含有 ...