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 ...
随机推荐
- php 克隆和引用类
/*class Ren { public $name; public $sex; function __construct($n,$s) { $this->name=$n; $this-> ...
- WPF中的VisualTreeHelper
VisualTreeHelper提供了一组WPF控件树模型,通过VisualTreeHelper可以遍历控件的树形结构,获取我们所需要的控件以及相应的属性: VisualTreeHelper提供了一下 ...
- hdu 4578 线段树 ****
链接:点我 1
- 使用MyEclipse Swing/Matisse
经常使用JBuilder开发工具的人都知道,在JBuilder中开发Swing应用程序是比较方便的,虽然比不上曾经红遍一时的Visual Basic,但开发界面的工作确实被大大简化了. JB ...
- Linphone iOS客户端编译时打开G729支持
Assuming you were able to compile the SDK and the linphone XCode project, here is what you need to d ...
- Collection总结一览
Java中集合大家族的成员实在是太丰富了,有常用的ArrayList.HashMap.HashSet,也有不常用的Stack.Queue,有线程安全的Vector.HashTable,也有线程不安全的 ...
- HashMap两种遍历数据的方式
HashMap的遍历有两种方式,一种是entrySet的方式,另外一种是keySet的方式. 第一种利用entrySet的方式: Map map = new HashMap(); Iterator i ...
- oracle 11g安装(转)
原文地址:http://www.2cto.com/database/201208/150620.html 一.Oracle 下载 注意Oracle分成两个文件,下载完后,将两个文件解压到同一目录下即可 ...
- HDU2824 The Euler function(欧拉函数)
题目求φ(a)+φ(a+1)+...+φ(b-1)+φ(b). 用欧拉筛选法O(n)计算出n以内的φ值,存个前缀和即可. φ(p)=p-1(p是质数),小于这个质数且与其互质的个数就是p-1: φ(p ...
- 详细讲解css单位px,em和rem的含义以及它们之间的区别
一.首先介绍一下px px就是css中最基本的长度单位了,用px做单位基本上没什么问题,可以做到让页面按套路精确的展现! 可但是!但可是!如果全篇用px布局会暗藏一个蛋疼的问题,就是当用户和Ctrl滚 ...