PHP之Memcache缓存详解

时间:2021-04-01 16:34:14

 

   Mem:memory缩写(内存):内存缓存

PHP之Memcache缓存详解

1、  断电或者重启服务器内存数据即消失,即临时数据;

Memcache默认端口:11211

存入方式:key=>>value    lengh(长度)   time(过期时间)

注意:不只是字符串,视频,声音,图片,文字等等都可以存;

对比:

Apache –消耗Cpu,用的内存很少

Memcache-消耗内存比较多,CPU消耗较少

Memcache的安装

如果安装了memcached不安装扩展,那么php无法操控memcached,但是命令行使用起来没有问题,如果安装了memcache扩展但是没有安装memcached服务,那么这个就无法使用 ,只有同时安装了memcached服务和memcache扩展才可以在PHP中使用memcached提高动态网站性能

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需要用管理员身份运行。

PHP之Memcache缓存详解

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之Memcache缓存详解

实例:

<?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()方法实现;