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 ...
随机推荐
- 山峰(codevs 1531)
1531 山峰 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description Rocky山脉有n个山峰,一字排开,从 ...
- python基础——函数的参数
python基础——函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复 ...
- Android之Fragment(一)
Fragment的产生与介绍 Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视.针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以适应平板 ...
- 分布式系统唯一ID生成方案汇总
系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,也常常为这个问题而纠结.生成ID的方法有很多,适应不同的场景.需求以及性能要求.所以有些比较复杂的系统会有多个ID生成的策略.下面就介绍一些常见 ...
- .NET的堆和栈01,基本概念、值类型内存分配
当我们对.NET Framework的一些基本面了解之后,实际上,还是很有必要了解一些更底层的知识.比如.NET Framework是如何进行内存管理的,是如何垃圾回收的......这样,我们才能写出 ...
- Maven跳过test打包
1. cd到当前目录 2. mvn install -Dmaven.test.skip=true 参考:http://blog.csdn.net/symgdwyh/article/details/ ...
- google svn 服务器使用(免费SVN服务器)
转自:http://hi.baidu.com/%C0%AF%B1%CA%B9%A4%D7%F7%CA%D2/blog/item/d6f6c6d7707d81d0a044df5f.html 1. 进入h ...
- MATLAB学习笔记(十一)——MATLAB图形用户界面设计
(一)菜单设计 一.建立用户菜单 1.概况: 用户菜单一般含有一级菜单和二级菜单,乃至多级菜单.每一级菜单又包含多个菜单项.建立菜单可以使用uimenu函数. 2.uimenu函数调用: %建立一级菜 ...
- logback 配置详解【讲解较全的博客网站】
http://blog.csdn.net/haidage/article/category/812478 详解(一)http://blog.csdn.net/haidage/article/detai ...
- HDU3987 Harry Potter and the Forbidden Forest(边数最少的最小割)
方法1:两遍最大流.一遍最大流后,把满流边容量+1,非满流边改为INF:再求最小割即为答案. 我大概想了下证明:能构成最小割的边在第一次跑最大流时都满流,然后按那样改变边容量再求一次最小割,就相当于再 ...