1、
安装并配置memcache扩展库
找到php.ini文件 添加:
extendsion= php_memcache.dll
并把对应的dll文件拷贝到ext目录
2、
使用PHP对Memcahced进行CURD操作(查看手册)
3、
编程测试
用于测试添加和获取
//实例化memcache对象 $m = new Memcache(); //连接到指定的memcached中 ,第一个参数:IP地址, 第二个参数memcached端口号 $m->connect('127.0.0.1', 11211); //添加数据到Mem中 /* add('键','值','压缩与否','保存时间') 压缩与否:0表示不压缩,常量 MEMCACHE_COMPRESSED 保存时间:单位秒 其中值得类型可以是:布尔型,null,数值型(整型和浮点型),字符串型,数组类型,对象,不可以是资源类型(存放资源,会将资源当成布尔值放入Mem中,数据类型丢失,故不可以是资源型数据) 如果是数组,请使用 ①序列化函数(serialize和unserialize)进行操作 ②或者使用json_encode()/json_decode()函数转化为json对象 再存入mem中 */ $user = array( array( 'u1' => 'admin1', 'age1' => 23, 'email' => 'aa@aa.com' ), array( 'u2' => 'admin2', 'age1' => 25, 'email' => 'bb@bb.com' ), ); //因为数组,先进行序列化 /* 为什么进行序列化: 在网络传输的时候,为了保证数据的类型不丢失,先序列化再发送, 或者转化为json对象 */ // $user = serialize($user); $user = json_encode($user); if (!$m->set('user', $user , MEMCACHE_COMPRESSED, 60)) { echo "请注意键值唯一"; } else { echo "加入成功"; } echo "
"; //获取刚才的key值 //$user = unserialize($m->get('user')); $user = json_decode($m->get('user')); $user = object2array($user); dump($user);
结论:在PHP所有的变量类型中,除了资源类型,其他的变量类型都可以放入memcached中
分析一个问题:mem在什么时候使用合适?
cookie、session、memcached的作用域分别是?
cookie 在各自的浏览器(客户端) --- 与一个浏览器关联
所以我们运用cookie来做的事情可以是:
①保存这个用户曾经访问过哪些网站
②访问过网站中的哪些商品
session 在服务器端(服务器和某些文件关联的(session是放在文件中的))一次会话关联(用户打开浏览器到用户关闭结束) ---私有空间
追踪某个用户的行为
memcached 所有的了浏览器都可以访问 --- 公共空间
如果一个浏览器对应一个用户,那么不同的用户的操作都可以同时访问memcached
如果我们网站,需要多个memcached缓存系统
$m = new Memcache();
$m -> addServer('192.168.1.101', 11211);
$m -> addServer('192.168.1.102', 11211);
$m -> addServer('192.168.1.103', 11211);
$m -> addServer('192.168.1.104', 11211);
这里使用负载均衡的算法来挑选一个memcached服务器。
$m->add('user', $user, MEMCACHE_COMPRESSED, 60);
说明:
当我们添加了memcached群时,我们添加数据时,不知道这个数据是存在哪台Memcached服务器上的,这个过程由addServer自动调节,自己去均衡。