Memcached 笔记与总结(4)memcache 扩展的使用
在 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 扩展的使用的更多相关文章
- CentOS安装memcached及配置php的memcache扩展
遇到的问题: 这个问题主要是linux服务器安装memcached服务后,phpinfo信息没有memcache扩展,所以主要是给php安装memcache扩展,教程中是安装memcache扩展,我认 ...
- 安装memcached服务 和 php 安装memcache扩展
这是所有的命令,至于哪个命令是干嘛的自己悟去吧 ,顺便穿插一些知识点 安装libevent cd /home/ wget http://www.monkey.org/~provos/libeven ...
- windows下安装Memcached服务器,PHP的memcache扩展
Memcahed 介绍:Memcahed是一个内存缓存服务器 (类似MySQL服务器) 作用:提高web的响应速度,例如缓存数据库查询结果 原理:把数据存到内存中 (提高速度的原因) 教程相关 系统: ...
- memcache服务器端及PHP memcache扩展的安装(转载)
memcache服务器端的安装(windows版) 1.下载memcached软件 32位下载地址: memcached-win32-1.4.4-14.zip(直接下载) 下载页面: 64位下载 ...
- Centos安装Memcached和(Nginx)Memcache扩展详细教程
下载memadmin,下载地址:http://www.junopen.com/memadmin/ 并在IIS新建站点. 测试地址:http://wap.yousawang.com/mem , 1.重启 ...
- linux安装memcached及memcache扩展
一.安装libevent函数库 下载地址:http://libevent.org 默认被安装到:/usr/local/lib目录下 安装memcached之前需要先安装libevent函数库. 可以通 ...
- linux上安装php7 memcache扩展 和 安装服务端memcached
linux上安装memcached不算太困难.唯一让本人感到困难的是 php7的memcache扩展安装.真的蛋疼! 先说安装服务端 memcached 1. 首先安装Libevent事件触发管理器. ...
- 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 ...
- linux安装memcached和php的memcache扩展 (已使用)
所需软件libevent-1.4.6-stable.tar.gz (http://monkey.org/~provos/libevent/)memcache-2.2.3.tgz (http://pec ...
随机推荐
- 案例(JQuery的ajax无刷新评论)
CommentsTest.html代码: <head> <meta http-equiv="Content-Type" content="text/ht ...
- eoe项目结构
├ cn.eoe.app –存放程序全局性类的包├ cn.eoe.app.adapter –存放适配器的实现类的包 ├ cn.eoe.app.adapter.base –存放适配器基类的包├ cn.e ...
- MVC学习笔记---MVC导出excel(数据量大,非常耗时的,异步导出)
要在ASP.NET MVC站点上做excel导出功能,但是要导出的excel文件比较大,有几十M,所以导出比较费时,为了不影响对界面的其它操作,我就采用异步的方式,后台开辟一个线程将excel导出到指 ...
- jquery 事件冒泡 解决 ie firefox 兼容性问题
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...
- Scala中的match(模式匹配)
文章来自:http://www.cnblogs.com/hark0623/p/4196261.html 转载请注明 代码如下: /** * 模式匹配 */ case class Class1(pa ...
- Loadrunner模拟JSON接口请求进行测试
Loadrunner模拟JSON接口请求进行测试 一.loadrunner脚本创建 1.Insert - New step -选择Custom Request - web_custom_re ...
- 在Windows下利用Eclipse调试FFmpeg
目录 [隐藏] 1 环境与软件 2 第一步:安装MinGW 3 第二步:配置编译环境 4 第三步:配置SDL 5 第四步:编译 5.1 编译faac 5.2 编译fdk-aac 5.3 编译x264 ...
- http://my.oschina.net/chinacion/blog/647641
http://my.oschina.net/chinacion/blog/647641
- DP(优化) UVALive 6073 Math Magic
/************************************************ * Author :Running_Time * Created Time :2015/10/28 ...
- SPOJ839 Optimal Marks(最小割)
题目大概说给一张图,每个点都有权,边的权等于其两端点权的异或和,现已知几个点的权,为了使所有边的边权和最小,其他点的权值该是多少. 很有意思的一道题,完全看不出和网络流有什么关系. 考虑每个未知的点$ ...