php操作Memcached -- Memcache 扩展
1.安装并配置Memcache扩展库
在php.ini文件添加:
;这里启用memcache.dll扩展
extension=php_memcache.dll (注:使用php操作memcache 也必须先安装并启动 memcached Server)
并把对应的dll文件拷贝到 php/ext目录下
php_memcache.dll 下载地址 :http://downloads.php.net/pierre/
2.使用php对Memcached进行CRUD操作 [配合php帮助手册]
如果没有权限加载memcache扩展
可以使用 memcached-client.php 客户端(http://www.nioxiao.com/wp-content/uploads/2006/04/memcached-client.zip)
可以使用 memcached-client.php 客户端(http://www.nioxiao.com/wp-content/uploads/2006/04/memcached-client.zip)
参考 http://5ydycm.blog.51cto.com/115934/185116
===============================================================================
结论: //string, int,float, boolean array object null resource 中除了 resource 不能存放,其它都可以.
编程测试
代码(测试放入php的各种数据类型)
<?php //1.实例化一个Memcache对象 $mem=new Memcache; //2. 连接到指定的memcache中 $mem->connect("127.0.0.1",11211); //0表示不压缩数据,如果使用压缩MEMCACHE_COMPRESSED if(!$mem->add("name","shunping",0,30)){ //也可以用 telnet 查看有没有加入 echo "之前已经放入了,现在放入不成功"; }else{ echo "ok!"; } //可以放入数值 if(!$mem->add("age",100,0,30)){ echo "age有哥们放入了"; }else{ echo "ok!"; } //可以放入boolean if(!$mem->set("ok",true,0,30)){ echo "ok有哥们放入了"; }else{ echo "ok!"; } //放入数组 $arr1=array("aa"=>"北京","bb"=>"天津"); //对数组进行序列化,在网络传输的时候,为了保证,数据类型的不丢失, //先序列化,再发生. //$arr1=serialize($arr1); $arr2=json_encode($arr1); print_r($arr2); $mem->add("arr",$arr1,MEMCACHE_COMPRESSED,100); //对象 require "Person.class.php"; $person=new Person(10,"xiaoming"); $mem->add("per1",$person,MEMCACHE_COMPRESSED,100); //取出 $per2=$mem->get("per1"); var_dump($per2); echo "对象名字=".$per2->name; //string, int,float, boolean array object null resource //不能把resource 类型放入到memcache $con=mysql_connect("localhost","root","root"); echo "<br/>"; var_dump($con); $mem->add("mylink",$con); ?>
用于获取各种数据
<?php //获取 $mem=new Memcache; $mem->connect("localhost",11211); if($val=$mem->get("name")){ echo "val=$val"; }else{ echo "没有这个值"; } /*获取数值*/ if($val=$mem->get("age")){ echo "age=$val"; }else{ echo "没有这个值"; } /*布尔值*/ echo "<br/>"; $val=$mem->get("ok"); echo "ok=$val"; echo "<br/>"; $arr1=$mem->get("arr"); echo "<pre>"; var_dump($arr1); echo "</pre>"; echo "<br/>对象的值.."; require "Person.class.php"; //取出 $per2=$mem->get("per1"); var_dump($per2); echo "对象名字=".$per2->name; echo "<br/>连接"; var_dump( $mem->get("mylink")); ?>
使用多个memcached 缓存服务器.,可以自动实现负载均衡(分布式设计)
<?php $mem=new Memcache(); //如果我们网站,需要多个memached缓存系统. //$mem->connect("localhost",11211); (立即向localhost的11211端口发出连接) $mem->addServer("192.168.1.100",11211);//256 ->10m $mem->addServer("192.168.1.200",11211); $mem->addServer("192.168.1.222",11211); . $mem->add("name","zs",0,100); //加入数据,加入到哪一个memcache系统是自动使用负载均衡算法存放的,我们无法决定放入那个memcache系统 ?>