PHP之Memcache缓存详解
Mem:memory缩写(内存):内存缓存
1、 断电或者重启服务器内存数据即消失,即临时数据;
Memcache默认端口:11211
存入方式:key=>>value lengh(长度) time(过期时间)
注意:不只是字符串,视频,声音,图片,文字等等都可以存;
对比:
Apache –消耗Cpu,用的内存很少
Memcache-消耗内存比较多,CPU消耗较少
Memcache的安装
windows 安装memcached
1、安装扩展:下载后解压(链接:http://pan.baidu.com/s/1gdWDjMz 密码:6isi)
选择合适的版本,把php_memcache.dll放到php的ext目录子下,在php.ini中添加一行代码:extension=php_memcache.dll。重启服务
2、安装服务:下载地址: http://www.2cto.com/uploadfile/2012/0713/20120713110308123.zip
将下载好的文件解压到某个文件夹下,打开cmd命令行,进入memcached目录,执行memcached -d install命令,安装服务。
如果在没有安装过的情况下,出现"failed to install service or service already installed"错误,可能是cmd.exe需要用管理员身份运行。
3、启动服务,执行memcached -d start
4、参数介绍
-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助
连接到memcache 命令行:telnet 127.0.0.1 11211
<?php
Echo phpinfo();
?>
实例:
<?php
$mem = new Memcache;
$mem->connect("127.0.0.1", 12000);
//Memcache::set方法有四个参数,第一个参数是key,第二个参数是value,第三个参数可选,表示是否压缩保存,第四个参数可选,用来设置一个过期自动销毁的时间。
$mem->set('test','123',0,60);
//Memcache::add方法的作用和Memcache::set方法类似,区别是如果 Memcache::add方法的返回值为false,表示这个key已经存在,而Memcache::set方法则会直接覆写。
$mem->add('test','123',0,60);
//Memcache::get方法的作用是获取一个key值,Memcache::get方法有一个参数,表示key。
$mem->get('test');//输出为'123'
//Memcache::replace 方法的作用是对一个已有的key进行覆写操作,Memcache::replace方法有四个参数,作用和Memcache::set方法的相同。
$mem->replace('test','456',0,60);
//Memcache::delete方法的作用是删除一个key值,Memcache::delete方法有两个参数,第一个参数表示key,第二个参数可选,表示删除延迟的时间。
$mem->delete('test',60);
?>
对于内存缓存,比较常用的有两种memcache和memcached扩展,而memcache和memcached的守护进程mencached同名,容易混淆
a、Memcache是完全在PHP框架内开发的
b、Memcached是使用libmemcached的
c、Memcached会比memcache多几个方法,使用方式上都差不多
d、memcache是原生实现的,支持OO和非OO两套接口并存,而memcached是使用libmemcached,只支持OO接口。更多关于他们的区别,请参考:http://hi.baidu.com/dong_love_yan/blog/item/afbe1e12d22e7512203f2e21.html
memcached ,还有个值得陈赞的地方,就是flag不用再操作的时候设置了,可以通过一个统一的setOption()方法实现;